2014-06-10 147 views
10

我是新來的Visual Studio Express的2012年Windows 8的0x800a139e - JavaScript的運行時錯誤:的SyntaxError

我已經能夠得到一個簡單的應用程序工作得很好,但它會拋出同樣的「例外」 。

所以測試,我剛開始一個全新的空白的JavaScript項目,只是掛在default.html中的jQuery代碼,並運行調試器,但下列情況除外仍然拋出:

Exception was thrown at line 1217, column 4 in ms-appx://xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/Scripts/jquery-2.1.1.js 
0x800a139e - JavaScript runtime error: SyntaxError 
Exception was thrown at line 1235, column 4 in ms-appx://xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/Scripts/jquery-2.1.1.js 
0x800a139e - JavaScript runtime error: SyntaxError 

我如何編輯jQuery代碼,或者我需要做些什麼才能擺脫拋出的異常?

其中第一異常被拋出jQuery代碼的一部分:

assert(function (div) { 
    // Support: Windows 8 Native Apps 
    // The type and name attributes are restricted during .innerHTML assignment 
    var input = doc.createElement("input"); 
    input.setAttribute("type", "hidden"); 
    div.appendChild(input).setAttribute("name", "D"); 

    // Support: IE8 
    // Enforce case-sensitivity of name attribute 
    if (div.querySelectorAll("[name=d]").length) { 
     rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="); 
    } 

    // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) 
    // IE8 throws error here and will not see later tests 
    if (!div.querySelectorAll(":enabled").length) { 
     rbuggyQSA.push(":enabled", ":disabled"); 
    } 

    // Opera 10-11 does not throw on post-comma invalid pseudos 
    div.querySelectorAll("*,:x"); // *********** THIS IS LINE 1217 *********** 
    rbuggyQSA.push(",.*:"); 
}); 

其中第二異常被拋出jQuery代碼的一部分:

if ((support.matchesSelector = rnative.test((matches = docElem.matches || 
    docElem.webkitMatchesSelector || 
    docElem.mozMatchesSelector || 
    docElem.oMatchesSelector || 
    docElem.msMatchesSelector)))) { 

    assert(function(div) { 
     // Check to see if it's possible to do matchesSelector 
     // on a disconnected node (IE 9) 
     support.disconnectedMatch = matches.call(div, "div"); 

     // This should fail with an exception 
     // Gecko does not error, returns false instead 
     matches.call(div, "[s!='']:x"); // ***** THIS IS LINE 1235 ***** 
     rbuggyMatches.push("!=", pseudos); 
    }); 
} 

TooLongDon'tRead - 我試過的東西:

從我所瞭解的情況來看,它假設拋出異常,但微軟不會批准拋出任何呃的應用程序rors/exceptions ...我很困惑,沒有明確的答案(這很容易找到),因爲它可能是每個人都有使用jQuery與visual studio的問題。我甚至嘗試使用jquery2.02,人們說這些不會拋出這些異常,但它仍然適用於我。我試着自己編輯jquery代碼,但那導致了很多其他錯誤。

我也嘗試了在nuget中的windows 8的jquery(它還沒有像2年更新過的那樣)......我想這是爲了解決這個問題,但它實際上給了我更多的運行時錯誤。

+1

由於通過評論這些異常是預期的,我認爲他們會被jQuery內部捕獲。如果這些例外從未達到頂級水平,您確定這是Microsoft的問題嗎?該應用程序內部使用異常來傳播錯誤,但這並不罕見,並不意味着應用程序崩潰。如果微軟不允許這樣做會很奇怪。 – sth

+0

@sth - 我認爲你是對的。當Visual Studio配置爲打破所有JavaScript錯誤時,可能會發生此問題。這個錯誤是預期的,並由jQuery處理,但Visual Studio不知道。似乎如果我忽略錯誤並繼續,一切都很好... – barrypicker

回答

4

如果window對象是可用的,定義一個window.onerror函數來捕獲所有未捕獲的異常:

window.onerror = function (message, url, lineNo) 
    { 
    console.log('Error: ' + message + '\n' + 'Line Number: ' + lineNo); 

    return true; 
    } 

console.log(window); 
console.log(1=2); 

參考

9

我在使用IE11時遇到了類似jQuery的問題。事實證明,即使JQuery 2.1.1聲稱與IE11兼容,但我發現在某些情況下它不是並且返回錯誤。嘗試使用最新的JQuery 1.X版本。它具有與2.1.1完全相同的功能,但仍具有在2.1.1中刪除的IE 7,8和9的兼容性檢查。

+0

我得到與2.1.1和1.11.1相同的錯誤。 ( – barrypicker

+4

)我的最後一條評論 - 沒關係,當Visual Studio被配置爲打破所有JavaScript錯誤時,會發生這個問題,這個錯誤是預期的,並且由jQuery來處理,但是Visual Studio不知道。忽略錯誤並繼續,一切都很好... – barrypicker

1

當我將網頁從VS10移動到VS12時,發生同樣的錯誤。我認爲問題在某種程度上與轉移有關。我閱讀了上述問題和答案,並得出結論說我的錯誤是使用Windows 8.1和IE 11進行測試。我使用FireFox瀏覽器測試了我的VS12版本軟件,錯誤消失了。我不知道如何改變IE 11中的jQuery來構建1.x.如果我這樣做,我會,因爲我希望我的軟件使用最流行的瀏覽器進行操作。

謝謝你的一切幫助。

相關問題