TypeError с использованием Disqus и reCaptcha на одной странице - PullRequest
0 голосов
/ 02 октября 2018

Я работаю над проектом для сайта блога.Сейчас я имею дело с 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, чтобы исправить эту ошибку?

...