#javascript
#javascript
Вопрос:
Я пытаюсь отправить сообщение всякий раз, когда пользователь выполняет поиск с помощью домашней страницы любой поисковой системы. Я не хочу вызывать эту функцию, когда он ищет слово с помощью адресной строки браузера.
Проблема, с которой я сталкиваюсь: кажется, что эта функция вызывается случайным образом, независимо от того, выполняю ли я поиск с помощью адресной строки или с веб-сайта. Почему это так?
window.onbeforeunload = function (e) {
var e = e || window.event;
safari.extension.dispatchMessage("WebsiteSearch")
};
Я очень новичок в JavaScript. Я уверен, что мне чего-то не хватает. Кто-нибудь может мне помочь с этим?
Комментарии:
1. гм, onbeforeunload срабатывает всякий раз, когда пользователь переходит со страницы…. Ничто не говорит вам, что вызывает это.
2. но бывают случаи, когда он не срабатывает. Связан ли этот сценарий, с которым я сталкиваюсь, с onbeforeunload или с чем-то еще в моем коде?
3. Предположительно, у вас есть расширение Safari (верно?) — Я бы использовал webextensions. webNavigation api и просто слушайте
onBeforeNavigate
, чтобы узнать, когда страница выгрузится, и делайте все, что вам нужно, не запуская код в бит сценария содержимого.4.
onbeforeunload
очень слаб, браузеры могут предпочесть не запускать его по разным причинам (например, им это нравится, нет взаимодействия с пользователем, недостаточно доверяют и т. Д.), Потому что различные сайты злоупотребляют им для спама и обманывают пользователей. С другой стороны, расширения требуют очень строгих разрешений.5. @BenjaminGruenbaum эта функция вызывается только тогда, когда пользователь переходит по ссылкам на веб-сайт или также когда пользователь переходит из адресной строки браузера?