Ace编辑器:未捕获的ReferenceError:窗口未定义

时间:2016-03-07 13:39:26

标签: javascript ace-editor

我几天来一直在寻找下述问题的解决方案,但我找不到任何帮助...

我在网页上的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进行了测试,但我总是收到相同的错误消息。

奇怪的是,一切似乎都很好(或者至少我也想要)。我去生产时,我只是不想把这些消息留在控制台中。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

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