#javascript
#javascript
Вопрос:
У меня есть веб-сайт с двойным щелчком мыши. В Sentry (отслеживание ошибок) есть некоторые ошибки в pubads_impl_xxx.js , но только в мобильном сафари. Почему это так? Должен ли я игнорировать их или есть какой-то способ их исправить?
Спасибо
TypeError: Illegal invocation
at HTMLDocument.document.createEvent(:1:40918)
at Wc.l(/gpt/pubads_impl_2020101501.js:6:89381)
at $c(/gpt/pubads_impl_2020101501.js:6:15725)
at bd.next(/gpt/pubads_impl_2020101501.js:6:16017)
at ? (/gpt/pubads_impl_2020101501.js:6:29861)
at new Promise(<anonymous>)
at Xa(/gpt/pubads_impl_2020101501.js:6:29629)
at Po.jn.dispatchEvent(/gpt/pubads_impl_2020101501.js:6:89295)
at cz._.q.Yb(/gpt/pubads_impl_2020101501.js:6:262763)
at Object.<anonymous>(/gpt/pubads_impl_2020101501.js:6:120833)
Комментарии:
1. Павел, у меня нет мобильного Safari, но я знаю, что CreateEvent устарел. Возможно, Mobile Safari уже удалил его поддержку. Можете ли вы попробовать использовать конструктор событий? Смотрите больше здесь: developer.mozilla.org/en-US/docs/Web/API/Document/createEvent
2. Можете ли вы показать нам функцию, в которой выдается ошибка?
3. @LajosArpad Сценарий взят из doubleclick от Google — securepubads.g.doubleclick.net/gpt/pubads_impl_2020102201.js так что я не могу это изменить. Мне просто любопытно, почему это происходит и как этого избежать (или если я должен игнорировать это: D)
4. Он удален, но по документации webkit он должен работать developer.apple.com/documentation/webkitjs/document /…
Ответ №1:
Похоже, это известная ПРОБЛЕМА 1811 sentry-javascript и связана с blacklistUrls
тем, что она не работает в мобильном Safari iOS9.
Предлагаемое решение — либо обновить blacklistUrls
, чтобы использовать регулярное выражение, либо обработать проверку в beforeSend
обратном вызове.
В коде, прикрепленном к проблеме, ошибка произошла из-за сканеров Facebook, вы можете выполнить аналогичную проверку, чтобы узнать, какой URL-адрес используют сканеры Google.
Sentry.init({
beforeSend: function (event) {
// Drop all events if query string includes `fbclid` string
if (location.search.indexOf('fbclid') !== -1) return null;
// Otherwise just let it though
return event;
}
});
Комментарии:
1. Спасибо, поскольку это происходит только в мобильном Safari, я также добавил проверку UA для iOS.
2. Но fbclid также присутствует, если это реальный пользователь, пришедший с Facebook, я не прав?