2014-06-10 36 views
10

Tôi mới đến Visual Studio Express 2012 cho Windows 8.0x800a139e - JavaScript lỗi runtime: Lỗi Cú pháp

tôi đã có thể để có được một ứng dụng đơn giản chỉ làm việc tốt, nhưng nó sẽ ném "ngoại lệ" cùng .

Vì vậy, để kiểm tra, tôi chỉ mới bắt đầu một thương hiệu mới dự án JavaScript trống, và chỉ cần liên kết mã jQuery trong default.html, và chạy trình gỡ lỗi, và các ngoại lệ sau vẫn được ném:

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 

Làm thế nào tôi có thể chỉnh sửa mã jQuery hoặc những gì tôi cần phải làm để loại bỏ ngoại lệ này đang được ném?

Các phần của mã jQuery nơi ngoại lệ đầu tiên được ném:

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(",.*:"); 
}); 

Các phần của mã jQuery nơi ngoại lệ thứ hai đang được ném:

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 - Những điều tôi đã thử:

Từ những gì tôi hiểu, đó là giả sử để ném ngoại lệ, tuy nhiên microsoft sẽ không phê duyệt một ứng dụng đang ném bất kỳ er rors/exceptions ... Tôi khá bối rối rằng không có một câu trả lời rõ ràng cho việc này (có thể dễ dàng tìm thấy), vì nó có thể là một vấn đề mà mọi người đều sử dụng jquery với visual studio. Tôi thậm chí đã thử sử dụng jquery2.02 mà mọi người nói đã không ném những ngoại lệ này, nhưng nó vẫn làm cho tôi. Tôi đã thử chỉnh sửa mã jquery bản thân mình, nhưng điều đó gây ra rất nhiều lỗi khác.

Tôi cũng đã thử jquery cho windows 8 trong nuget (chưa được cập nhật trong 2 năm) ... mà tôi đoán là giả sử để giải quyết công cụ này, nhưng nó thực sự đã cho tôi nhiều lỗi thời gian chạy hơn.

+1

Kể từ khi đi theo các ý kiến ​​những ngoại lệ này được mong đợi, tôi cho rằng chúng sẽ bị jQuery đánh cắp nội bộ. Nếu những ngoại lệ đó không bao giờ đạt đến mức cao nhất, bạn có chắc đây là vấn đề đối với Microsoft không? Ứng dụng sử dụng các ngoại lệ bên trong để truyền bá lỗi, nhưng điều đó không phải là bất thường và không có nghĩa là ứng dụng gặp sự cố. Sẽ rất lạ nếu Microsoft không cho phép điều này. – sth

+0

@sth - Tôi nghĩ bạn đúng. Vấn đề này có thể xảy ra khi Visual Studio được cấu hình để phá vỡ tất cả các lỗi JavaScript. Lỗi này được mong đợi và được xử lý bởi jQuery, nhưng Visual Studio không biết điều đó. Dường như nếu tôi bỏ qua lỗi và tiếp tục, tất cả đều tốt ... – barrypicker

Trả lời

4

Nếu đối tượng window có sẵn, xác định một chức năng window.onerror để bắt tất cả các trường hợp ngoại lệ còn tự do:

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

    return true; 
    } 

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

Tài liệu tham khảo

9

Tôi gặp sự cố tương tự với jQuery khi sử dụng IE11. Nó chỉ ra rằng mặc dù JQuery 2.1.1 tuyên bố là IE11 tương thích, tôi thấy rằng trong một số trường hợp nó không và trả về lỗi. Hãy thử sử dụng bản dựng JQuery 1.X gần đây nhất. nó có cùng chức năng giống như 2.1.1, nhưng vẫn có khả năng kiểm tra tính tương thích cho IE 7, 8 và 9 đã bị loại bỏ trong 2.1.1.

+0

Tôi gặp lỗi tương tự với 2.1.1 và 1.11.1. : ( – barrypicker

+4

cho mỗi bình luận cuối cùng của tôi - không bao giờ nhớ. Vấn đề này có thể xảy ra khi Visual Studio được cấu hình để phá vỡ tất cả các lỗi JavaScript. Lỗi này dự kiến ​​và được xử lý bởi jQuery, nhưng Visual Studio không biết điều đó. bỏ qua lỗi và tiếp tục, tất cả đều tốt ... – barrypicker

1

Tôi đã gặp lỗi tương tự khi tôi chuyển trang web của mình từ VS10 sang VS12. Tôi nghĩ rằng vấn đề là bằng cách nào đó phải làm với việc chuyển giao. Tôi đã đọc các câu hỏi và câu trả lời ở trên và kết luận rằng lỗi của tôi đã được thử nghiệm bằng Windows 8.1 và IE 11. Tôi đã kiểm tra phần mềm phiên bản VS12 của mình bằng trình duyệt FireFox và lỗi đã biến mất. Tôi không biết làm thế nào để thay đổi jQuery trong IE 11 để xây dựng 1.x. Nếu tôi đã làm tôi sẽ vì tôi muốn phần mềm của tôi hoạt động bằng cách sử dụng các trình duyệt phổ biến nhất.

Cảm ơn tất cả sự giúp đỡ của bạn.