Несколько лет назад разрабатывал систему на ASP.NET WebForms, в которой расчет ряда значений задавался с помощью формул, формулы описывались языком javascript. Было решено для обработки формул использовать Jurassic, а в качестве визуального редактора использовать CodeMirror. CodeMirror - это классный текстовой редактор, написанный на javascript, для использования на веб-страницах с возможностью расширения. Данный редактор поддерживает возможность подсветки синтаксиса более чем 100 языков программирования.
В целом процесс внедрения CodeMirror в нашу систему проходил успешно, но возникла проблема при использовании его внутри UpdatePanel. Для решения данной задачи был использован следующий хак:
function initializeCodeMirror() { var formulaTxt = '<%=FormulaTxt.ClientID%>'; var editor = CodeMirror.fromTextArea(document.getElementById(formulaTxt), { leaveSubmitMethodAlone: true, lineNumbers: true, mode: "javascript", theme: 'neat', continuousScanning: 500, matchBrackets: true, continueComments: "Enter", extraKeys: { "F11": function(cm) { cm.setOption("fullScreen", !cm.getOption("fullScreen")); }, "Esc": function(cm) { if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false); }, "Ctrl-Q": "toggleComment" } }); // Хак для использования CodeMirror в UpdatePanel window['cmLocalStateEvent'] = function () { editor.save(); }; // Хак для отображения контента CodeMirror с учетом интерферирующих скриптов setTimeout(function() { editor.refresh(); }, 0);
Комментариев нет:
Отправить комментарий