Я работаю над проектом для сайта блога.Сейчас я имею дело с TypeError
, который генерирует файл Disqus embed.js в консоли.Я отлаживал код из Developer Tools и вот что я нашел.
При встраивании Disqus добавляет анонимную функцию в качестве обработчика для события сообщения объекта окна.Функция принимает MessageEvent
в качестве первого параметра с именем msg_event
, и что-то в этом направлении идет дальше (пример кода):
var variable
try {
variable = JSON.parse(msg_event.data)
} catch(error) {
return
}
Теперь обработчик попытается получить доступ к некоторым свойствам variable
, но, конечно, оператор try совсем не спасет нас, если свойство data в MessageEvent
равно нулю.Если вы перейдете на любую страницу, содержащую комментарии Disqus (возьмите demo ) и выполните следующую строку кода в консоли, вы увидите TypeError
, который я вижу намой сайт: window.postMessage(null, '*')
Я продолжил отладку страницы, чтобы выяснить, что JavaScript, публикующий нулевое сообщение, не принадлежит Disqus, он принадлежит reCaptcha, который подключен на той же странице (страница статьи).Очевидное решение (и единственное, которое я могу придумать) заключается в изменении дизайна сайта, чтобы на одной странице не было скриптов конфликтующего поставщика.Еще одно, не решение - отправить сайт с незначительной ошибкой консоли.Но это управленческое решение.Может быть, есть решение javascript, чтобы исправить эту ошибку?