2014-06-10 18 views
10

Sono nuovo a Visual Studio Express 2012 per Windows 8.0x800a139e - JavaScript runtime error: SyntaxError

sono stato in grado di ottenere una semplice applicazione per funzionare bene, ma sarebbe gettare le stesse "eccezioni" .

Così alla prova, ho appena iniziato un nuovo marchio progetto di JavaScript vuoto, e solo legato il codice jQuery in default.html, e corse il debugger, e le seguenti eccezioni sono ancora gettati:

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 

Come posso modificare il codice jQuery o cosa devo fare per eliminare questa eccezione?

La parte del codice jQuery cui viene generata la prima eccezione:

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

La parte del codice jQuery cui viene generata la seconda eccezione:

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 - Cose che ho provato:

Da quello che ho capito, si suppone di lanciare un'eccezione, tuttavia Microsoft non approverà un'app che sta lanciando qualsiasi rors/eccezioni ... Sono abbastanza confuso dal fatto che non ci sia una risposta chiara a questo (che è facile da trovare), dal momento che è probabile che tutti abbiano problemi con jquery con Visual Studio. Ho anche provato a usare jquery2.02 che la gente ha detto non ha gettato queste eccezioni, ma lo ha fatto ancora per me. Ho provato a modificare il codice jQuery da solo, ma questo ha causato un sacco di altri errori.

Ho anche provato il jquery per Windows 8 in nuget (che non è stato aggiornato in circa 2 anni) ... che suppongo fosse per risolvere questo problema, ma in realtà mi ha dato ancora più errori di runtime.

+1

Dal momento che i commenti fanno eccezione a queste eccezioni, presumo che verranno catturati internamente da jQuery. Se tali eccezioni non raggiungono mai il massimo livello, sei sicuro che questo sia un problema per Microsoft? L'app utilizza eccezioni internamente per propagare gli errori, ma ciò non è insolito e non significa che l'app si arresti in modo anomalo. Sarebbe strano se Microsoft non lo permettesse. – sth

+0

@sth - Penso che tu abbia ragione. Questo problema può verificarsi quando Visual Studio è configurato per interrompere tutti gli errori JavaScript. Questo errore è previsto e gestito da jQuery, ma Visual Studio non lo sa. Sembra che se ignoro l'errore e continui, tutto va bene ... – barrypicker

risposta

4

Se l'oggetto window è disponibile, definire una funzione window.onerror per catturare tutte le eccezioni non gestite fanno:

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

    return true; 
    } 

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

Riferimenti

9

Ho riscontrato un problema simile con jQuery quando si utilizza IE11. Risulta che anche se JQuery 2.1.1 afferma di essere compatibile con IE11, ho scoperto che in alcune situazioni non lo è e restituisce errori. Prova a utilizzare la build JQuery 1.X più recente. ha esattamente la stessa funzionalità di 2.1.1, ma ha ancora i controlli di compatibilità per IE 7, 8 e 9 che sono stati rimossi in 2.1.1.

+0

Ottengo lo stesso errore con 2.1.1 e 1.11.1. :( – barrypicker

+4

per il mio ultimo commento - non importa.Questo problema può verificarsi quando Visual Studio è configurato per interrompere tutti gli errori JavaScript Questo errore è previsto e gestito da jQuery, ma Visual Studio non lo sa. ignora l'errore e vai avanti, va tutto bene ... – barrypicker

1

Ho avuto lo stesso errore quando ho spostato la mia pagina Web da VS10 a VS12. Pensavo che il problema fosse in qualche modo dovuto al trasferimento. Ho letto le domande e le risposte di cui sopra e ho concluso che il mio errore è stato il test utilizzando Windows 8.1 e IE 11. Ho testato il mio software di versione VS12 utilizzando il browser FireFox e l'errore è andato. Non so come cambiare il jQuery in IE 11 per costruire 1.x. Se lo facessi, lo farei perché voglio che il mio software funzioni utilizzando i browser più popolari.

Grazie per tutto il vostro aiuto.

Problemi correlati