Ace编辑器出现XXXXXXX

This commit is contained in:
lealife
2015-05-06 23:54:10 +08:00
parent 6fba2a6416
commit fcbc23e964
2 changed files with 86 additions and 54 deletions
public/js/app

File diff suppressed because one or more lines are too long

@ -465,6 +465,7 @@ function initEditor() {
// 初始化编辑器
tinymce.init({
inline: true,
theme: 'leanote',
valid_children: "+pre[div|#text|p|span|textarea|i|b|strong]", // ace
/*
protect: [
@ -480,7 +481,8 @@ function initEditor() {
// 为了把下拉菜单关闭
ed.on("click", function(e) {
$("body").trigger("click");
// $("body").trigger("click");
// console.log(tinymce.activeEditor.selection.getNode());
});
},
@ -972,14 +974,26 @@ LeaAce = {
if(!force && !me.canAndIsAce()) {
return;
}
me.disableAddHistory();
var $pre = $('#' + id);
if($pre.length == 0) {
return;
}
var rawCode = $pre.html(); // 原生code
try {
me.disableAddHistory();
// 本身就有格式的, 防止之前有格式的显示为<span>(ace下)
if($pre.attr('style') || $pre.html().indexOf('style') != -1) {
$pre.html($pre.text());
// return;
}
$pre.find('.toggle-raw').remove();
var preHtml = $pre.html();
$pre.removeClass('ace-to-pre');
$pre.attr("contenteditable", false); // ? 避免tinymce编辑
var aceEditor = ace.edit(id);
aceEditor.setTheme("ace/theme/tomorrow");
var brush = me.getPreBrush($pre);
@ -991,8 +1005,17 @@ LeaAce = {
}
b = b || "javascript";
aceEditor.session.setMode("ace/mode/" + b);
aceEditor.session.setOption("useWorker", false); // 不用语法检查
// retina
if(window.devicePixelRatio == 2) {
aceEditor.setFontSize("12px");
}
else {
aceEditor.setFontSize("14px");
}
aceEditor.getSession().setUseWorker(false); // 不用语法检查
aceEditor.setOption("showInvisibles", false); // 不显示空格, 没用
aceEditor.setShowInvisibles(false); // OK 不显示空格
aceEditor.setOption("wrap", "free");
aceEditor.setShowInvisibles(false);
aceEditor.setAutoScrollEditorIntoView(true);
@ -1024,9 +1047,18 @@ LeaAce = {
}
// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
me.resetAddHistory();
return aceEditor;
} catch(e) {
// 当有错误时, 会有XXXXX的形式, 此时不要ace, 直接原生的!!!
console.error('ace error!!!!');
console.error(e);
$pre.attr("contenteditable", true);
$pre.removeClass('ace-tomorrow ace_editor ace-tm');
$pre.html(rawCode);
me.resetAddHistory();
}
},
clearIntervalForInitAce: null,
initAceFromContent: function(editor) {