jQuery.Deferred exception: The string did not match the expected pattern

被刻印的时光 ゝ 提交于 2020-01-01 06:44:07

问题


I've a little headache with this console error, ONLY on Safari (working on MacBook actually).

I have this function:

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

invoked inside another function:

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");
    }
}

Now, on Chrome works like a charm, but on Safari the console throw this error:

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.

Someone have idea what hell happening???

Thanks in advance guys!


回答1:


There is a closing bracket missing, so you are using an invalid selector. (as Roamer-1888 mentioned as comment)

Having a look at the following discussion where invalid selectors in different browsers has been tested, only Safari is that strict bringing up errors: https://www.reddit.com/r/firefox/comments/5nbmqi/on_handling_invalid_selector_strings/

For all jquery-Users: check your jquery version, as there has been bugfixes on selector issues.

I had the same error only on Safari on this statement

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

A statement working fine on Firefox and Chrome, but not on Safari when using version jquery 1.11.1; but working fine in all of them with jquery 1.12.4.

In my case I solved it using the following syntax:

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


来源:https://stackoverflow.com/questions/41661708/jquery-deferred-exception-the-string-did-not-match-the-expected-pattern

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!