Ждать отправки сообщения в window.onbeforeunload? - PullRequest
2 голосов
/ 14 августа 2010

Я возиться с расширениями Safari, и мне бы хотелось, чтобы мое расширение отвечало на открывающиеся или закрывающиеся вкладки пользователя.

У меня есть расширение, внедряющее скрипт, который запускается при открытии новой вкладкиуведомляет глобальную страницу о том, что открыта новая вкладка.Я хочу, чтобы скрипт также уведомлял глобальную страницу о закрытии вкладки.Для этого у меня есть встроенный скрипт, который устанавливает функцию window.onbeforeunload на вызов safari.self.tab.dispatchMessage.Это работает, но проблема в том, что вкладка закрывается и Javascript уничтожается до того, как сообщение пройдет.Если, например, я поставлю alert после dispatchMessage, чтобы запретить закрытие вкладки, пока пользователь не нажмет OK, сообщение пройдет нормально, но это, очевидно, не очень хороший пользовательский опыт.

Есть ли способ купить немного дополнительного времени прямо перед закрытием вкладки, или есть лучшая функция для переопределения этого или чего-то еще?

1 Ответ

0 голосов
/ 18 августа 2010

Проблема в том, что все сообщения, кроме одного (canLoad), являются асинхронными. IMO, canLoad - это что-то вроде хака, но я использовал его эффективно, когда по какой-то причине мне отчаянно требуется синхронный обмен сообщениями. Я задал аналогичный вопрос некоторое время назад, который может помочь проиллюстрировать canLoad решение / хак.

...