3

У меня небольшая головная боль с этой консольной ошибкой, ТОЛЬКО на Safari (фактически работает на MacBook).jQuery.Deferred exception: строка не соответствует ожидаемому шаблону

У меня есть эта функция:

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

вызывается внутри другой функции:

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

Теперь на Chrome работает как шарм, но на сафари консоли бросить эту ошибку:

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. 

У кого-то есть идея, что происходит? ???

Спасибо заранее, ребята!

+1

Строка, передаваемая 'существует()' имеет отверстие '[' но не ']', что достаточно, чтобы вызвать ошибку. –

ответ

3

Отсутствует закрывающая скобка, поэтому вы используете недействительный селектор. (Как Roamer-1888 упоминаются как комментарий)

Посмотрев на следующую дискуссии, где недействительные селекторы в разных браузерах были протестированы, только Safari является то, что строгими воспитывающими ошибками: https://www.reddit.com/r/firefox/comments/5nbmqi/on_handling_invalid_selector_strings/

Для всех jquery- Пользователи: проверьте вашу версию jquery, так как были исправлены ошибки при проблемах выбора.

У меня была такая же ошибка только на сафари это заявление

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

Оператор работает отлично на Firefox и Chrome, но не на Safari при использовании версии JQuery 1.11.1; но отлично работают во всех них с jquery 1.12.4.

В моем случае я решил его, используя следующий синтаксис:

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