7

पर jQuery क्रैशिंग चलाना मैं अपने एएसपीनेट वेबपृष्ठ (साइट.मास्टर फ़ाइल वास्तव में) में बस jQuery (1.9.1, लेकिन पुराना 1.8.3 वैसे ही व्यवहार करता हूं) सहित पल के लिए हूं। आईई 9/विन 7-64 के तहत सबकुछ ठीक चल रहा था, लेकिन जब से मैं आईई 10 (अभी भी विन 7-64) में अपग्रेड कर चुका हूं, अब जब मैं स्थानीय रूप से वेबपृष्ठ चलाता हूं, इंटरनेट एक्सप्लोरर का चयन करता हूं और विजुअल स्टूडियो के भीतर से चलाता हूं, तो मैंने अपवाद मारा।IE10/Win7

अपवाद jquery-1.9.1.js फ़ाइल के लाइन 4224 पर है।

// Opera 10-12/IE8 - ^= $= *= and empty values 
// Should not select anything 
div.innerHTML = "<input type='hidden' i=''/>"; 
if (div.querySelectorAll("[i^='']").length) { 
    rbuggyQSA.push("[*^$]=" + 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"); 
rbuggyQSA.push(",.*:"); 

jQuery, पुराने और नए दोनों jQuery, विंडोज 7 पर आईई 10 को सही तरीके से संभाल नहीं पाते हैं। मैं ओपेरा 10-11 में दुर्घटनाग्रस्त हूं, जो दिलचस्प है।

Exception was thrown at line 4224, column 4 in http://localhost:49928/jquery/jquery-1.9.1.js 
0x800a139e - JavaScript runtime error: SyntaxError 
Source line: div.querySelectorAll("*,:x"); 

किसी कोई विचार:

मैं भी 4242

if ((support.matchesSelector = isNative((matches = docElem.matchesSelector || 
    docElem.mozMatchesSelector || 
    docElem.webkitMatchesSelector || 
    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"); 
     rbuggyMatches.push("!=", pseudos); 
    }); 

यहाँ त्रुटियों में से एक है पर एक दुर्घटना देखते हैं?

+0

अपवाद क्या है? आपके द्वारा पोस्ट किए गए कोड में कौन सी रेखा लाइन 4224 है? –

+0

मैंने अपने प्रश्न में संवाद से अपवाद की प्रतिलिपि बनाई, ऊपर देखें। –

+0

jQuery टीम के मुताबिक, यह ठीक है, क्योंकि इसकी उम्मीद है। वे अपवाद को उच्च स्तर पर पकड़ते हैं और इसे स्वयं संभालते हैं। लंगड़ा, लेकिन यह स्थिति –

उत्तर

17

jQuery टीम तर्क प्रवाह के लिए कुछ स्थितियों में अपवादों का उपयोग करती है। इस बग को मैंने WinJS ऐप्स के साथ एक ही समस्या के लिए दायर किया: http://bugs.jquery.com/ticket/14123

अपवाद के संचालन के बाद से, वे इसे एक समस्या नहीं मानते हैं। मैं करता हूं, क्योंकि यह ऐप को "फेंकने पर" सेट के बिना कठिन तरीके से डिबग कर देता है।

तो, यह समस्या है। आप इसके बारे में कुछ भी नहीं कर सकते हैं।

+0

नई टिप्पणी के लिए धन्यवाद। दुख की बात है, लेकिन मेरे नेट वेब एप्लिकेशन को डीबग करना इतना कठिन है। –

+0

वहां आप जाते हैं, सालों बाद मुझे एक ही परेशानी हो रही है, मैंने आपके द्वारा जो भी कहा है, मैंने अभी भी कोई बदलाव नहीं किया है। क्या करें? कृपया सहायता कीजिए! –

1

संदेश के अलावा, कुछ भी गलत हो रहा है? जैसा कि टिप्पणी कहती है, "यह अपवाद के साथ विफल होना चाहिए।" अपवाद को assert() विधि द्वारा नियंत्रित किया जाता है और प्रोग्राम को समाप्त करने का कारण नहीं बनना चाहिए। दृश्य स्टूडियो में केवल अनचाहे अपवाद दिखाने के लिए एक विकल्प होना चाहिए।

आगे की जानकारी: This page का वर्णन करने के लिए कैसे "जावास्क्रिप्ट पहला मौका अपवाद" दृश्य स्टूडियो में की स्थापना, इसे बंद करने को निकाल देता है आप देख रहे हैं। ध्यान दें कि अगर आप वादे को डीबग कर रहे हैं तो आप इसे बंद नहीं करना चाहेंगे, लिंक में आलेख आगे चर्चा करता है। लेकिन मेरा मानना ​​है कि jQuery इस मामले में अपवाद को ठीक तरह से संभाला जा रहा है और यदि आप डीबगर में नहीं चल रहे थे तो आपको संदेश नहीं दिखाई देगा।

0

मुझे विंडोज 7 पर सफारी में एक ही समस्या का अनुभव हुआ जब डीबगर को फंसे त्रुटियों पर तोड़ने के लिए सेट किया गया था। समस्या यह प्रतीत होती है कि डीबगर ने उसी कार्य में कैच (ई) होने की उम्मीद की थी। हुह

function assert(fn) { 
    var div = document.createElement("div"); 

    try { 
     return fn(div); 
    } catch (e) { 
     return false; 
    } finally { 
     // release memory in IE 
     div = null; 
    } 
} 

निराशा होती, !?: आप बयान से निष्पादन बयान जारी रखते हैं पकड़ (ई) त्रुटि पूरी तरह से अच्छी तरह से बाद में दर्शाते हैं उनमें लेने करता है() फ़ंक्शन