2016-03-07 159 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