我几天来一直在寻找下述问题的解决方案,但我找不到任何帮助...
我在网页上的6个不同的DIV上使用Ace编辑器(所以我有6个编辑器)。 基本上一切正常,我能够创建它们,设置它们(语言模式,软标签等)并在用户完成后管理它们的内容。
但我在控制台中仍然保持相同的错误消息" Uncaught ReferenceError:窗口未定义"。我得到它6次,页面上每个Ace编辑器1个。
这是我正在使用的JS。 divIdsArray是一个包含6个DIVs ID的数组。
function initAceEditorFields()
{
$(document).ready(function(){
for (var i = 0 ; i < divIdsArray.length ; i++){
var l_arr_splitted = divIdsArray[i].split("_");
var l_str_code = l_arr_splitted[2];//Each div id contains either "js" or "html" which i am retrieving here
var l_ace_editor = ace.edit(divIdsArray[i]);
l_ace_editor.setShowPrintMargin(false);
l_ace_editor.getSession().setUseSoftTabs(false);
l_ace_editor.getSession().setTabSize(4);
l_ace_editor.$blockScrolling = Infinity;
if(l_str_code == "js"){
l_ace_editor.getSession().setMode("ace/mode/javascript");
}else{
l_ace_editor.getSession().setMode("ace/mode/html");
}
}
});
}
我正在从ace包中加载文件:ace.js,mode-javascript.js和mode-html.js。
我尝试过使用ace编辑器构建:&#34; src-min&#34;和&#34; src-min-noconflict&#34;来自github repo并且我使用Chrome,Mozilla和MS Edge进行了测试,但我总是收到相同的错误消息。
奇怪的是,一切似乎都很好(或者至少我也想要)。我去生产时,我只是不想把这些消息留在控制台中。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
您的ace编辑器必须在某处使用Web worker,然后在Web worker中调用的某些函数正在尝试访问“窗口”。您向我们展示的代码没有引用窗口。仔细检查你与ace的其他交互,看看你是否传入了一个引用“window”或jquery的函数,或者全局范围内的任何其他依赖项。如果没有,那么我怀疑控制台中的错误超出了您的控制范围。