3

Ich habe ein wenig Kopfschmerzen mit dieser Konsole Fehler, nur auf Safari (tatsächlich auf MacBook arbeiten).jQuery.Der Ausnahmefehler: Die Zeichenfolge stimmte nicht mit dem erwarteten Muster

Ich habe diese Funktion:

function exists(element){ 
    var exists = document.querySelector(element); 
    return exists; 
} 

in einer anderen Funktion aufgerufen:

function includeHoverStylesheet(){ 
    var path = $("body").attr("data-hover"); 
    if (!("ontouchstart" in document.documentElement || exists("link[href='" + path + "'"))) { 
     var link = document.createElement("link"); 
     link.rel = "stylesheet", link.href = path, document.head.appendChild(link) && document.body.removeAttribute("data-hover"); 
    } 
} 

nun auf Chrome funktioniert wie ein Charme, aber auf Safari die Konsole diesen Fehler werfen:

1) Invalid CSS property declaration at: * 
2) jQuery.Deferred exception: The string did not match the expected pattern. 
3) SyntaxError (DOM Exception 12): The string did not match the expected pattern. 

Jemand hat eine Idee, was los ist ???

Vielen Dank im Voraus Jungs!

+1

Der String übergeben 'existiert()' eine Öffnung '[' aber keine ']', was genug ist, um den Fehler zu verursachen. –

Antwort

3

Da eine schließende Klammer fehlt, verwenden Sie einen ungültigen Selektor. (Als Roamer-1888 als Kommentar erwähnt)

einen Blick auf die folgende Diskussion zu haben, wo ungültige Selektoren in verschiedenen Browsern getestet wurde, nur Safari ist, dass strenge Erziehung Fehler: https://www.reddit.com/r/firefox/comments/5nbmqi/on_handling_invalid_selector_strings/

Für alle jquery- Benutzer: Überprüfen Sie Ihre jquery-Version, da Bugfixes bei Selector-Problemen aufgetreten sind.

hatte ich den gleichen Fehler nur auf Safari auf dieser Aussage

var div = $('<div class="abc">'); 

Eine Aussage adaequat auf Firefox und Chrome, aber nicht auf Safari, wenn Version jquery 1.11.1 verwendet wird; aber funktioniert gut in allen von ihnen mit jQuery 1.12.4.

In meinem Fall habe ich gelöst es mit der folgenden Syntax:

var div = $('<div>', {"class":"abc"}); 
Verwandte Themen