2016-03-07 85 views
1

我一直在寻找一个解决方案下述问题了几天,但我无法找到任何帮助窗口...王牌编辑:没有定义

我使用6王牌编辑:未捕获的ReferenceError网页上有不同的DIV(所以我有6位编辑)。 基本上一切正常,我可以创建它们,设置它们(语言模式,软标签等),并在用户完成后管理它们的内容。

但我在控制台“Uncaught ReferenceError:window is not defined”中保持相同的错误信息。我获得了6次,每页1个Ace编辑器。

这是我使用的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编译器构建:github repo中的“src-min”和“src-min-noconflict”,我用Chrome,Mozilla和MS Edge进行了测试,但是我总是收到相同的错误消息。

这很奇怪,因为一切看起来都很好(或者至少我也是这样)。当我投入生产时,我不想在控制台中留下这些消息。

任何帮助将不胜感激。

谢谢!

+0

请告诉我们显示的错误信息包括文件名和行号。也正是你正在运行的Ace版本。回调堆栈也是有用的。 – HBP

+0

感谢您的快速回复。我从2016.01.17开始使用Ace版本1.2.3。 – David

+0

我从worker-html.js的第1行和第3行的worker-javascript.js中得到了3条消息,也是在第1行,因为这些都是缩小文件。它对应于我设置的语言模式(3个在js中,3个在html中)。但我不会在HTML中加载这些文件,所以我不知道它们是如何被调用的。我是一名初级开发人员,不知道回调堆栈的含义。 – David

回答

1

您的ace编辑器必须在某处使用web worker,然后在web worker内部调用一些函数试图访问“窗口”。您向我们展示的代码没有对窗口的引用。仔细检查你与ace的其他交互,看看你是否传入了引用“window”或jquery的函数,或者在全局范围内的任何其他依赖项。如果没有,那么控制台中的错误不在我怀疑的控制范围之内。

+0

感谢您的快速回复。我将继续仔细检查我的代码,但是我已经将这个问题隔离到了这个函数中。我想我一定已经忘记了一些事情,或者说,就像你在我的控制之外说的那样。 – David