我目前正在自定义widgets文本区域的插件中使用此代码来启用codemirror。
(function ($) {
$(document).ready( function(){
var coinmedi_es_<?php echo $wid_id; ?> = wp.codeEditor.defaultSettings ? _.clone( wp.codeEditor.defaultSettings ) : {};
coinmedi_es_<?php echo $wid_id; ?>.codemirror = _.extend(
{},
coinmedi_es_<?php echo $wid_id; ?>.codemirror,
{
mode: \'htmlmixed\',
lineNumbers: true,
indentUnit: 2,
tabSize: 2,
autoRefresh:true
}
);
var cm_editor_<?php echo $wid_id; ?> = wp.codeEditor.initialize($(\'#<?php echo $textarea_id; ?>\') , coinmedi_es_<?php echo $wid_id; ?> );
$(document).on(\'keyup\', \'.CodeMirror-code\', function(){
$(\'#<?php echo $textarea_id; ?>\').html(cm_editor_<?php echo $wid_id; ?>.codemirror.getValue());
$(\'#<?php echo $textarea_id; ?>\').trigger(\'change\');
});
});
})(jQuery);
HTML的一切都很好,但当我尝试添加javascript时,例如。
<script> alert(\'1\') </script>
它接受javascript并按其应该的方式突出显示,但当我单击“保存”按钮时,此文本区域中没有任何内容。当我删除javascript时,它会按原样保存。我哪里做错了,我似乎无法指出为什么它没有节约。任何帮助都将不胜感激。
编辑:更新方法
$instance[\'ad-code\'] = ( ! empty( $new_instance[\'ad-code\'] ) ) ? $new_instance[\'ad-code\'] : \'\';
最合适的回答,由SO网友:Second2None 整理而成
问题归结为使用.html
并将html直接注入Codemirror,具体如下:
$(\'#<?php echo $textarea_id; ?>\').html(cm_editor_<?php echo $wid_id; ?>.codemirror.getValue());
将此更改为
.text
通过对html/js进行编码更正了此问题
$(\'#<?php echo $textarea_id; ?>\').text(cm_editor_<?php echo $wid_id; ?>.codemirror.getValue());