Как сохранить мой пользовательский скрипт работающим, даже когда сайт отключен?

Я хочу сделать пользовательский скрипт (сейчас я беспокоюсь только о совместимости с Chrome) перезагружать страницу каждые 30 секунд (я имею в виду, что это не главное, я просто хочу каким-то образом выполнить какой-нибудь скрипт, пока интернет отключен), на случай, если Интернет отключается, и пользователь не может его увидеть.

Теперь проблема в том, что как только интернет отключится, страница будет перенаправлена ​​на "Эта веб-страница недоступна", и все пользовательские скрипты просто перестанут работать.

Я уже пытался добавить @include * к метаданным, надеясь, что это позволит usercript работать на указанной странице, однако я не добился успеха.

2 ответа

Решение

Отображение Chrome "Эта веб-страница недоступна" не является стандартной страницей со схемой "Greaseable". Это означает, что скрипты Tampermonkey и пользовательские скрипты Chrome не будут запускаться для него. Вам нужно будет сделать полноценное расширение Chrome. (Подробнее на этот вопрос.)

Есть несколько обходных путей:

(1) Вы можете переключить вашего DNS-провайдера на такого, как OpenDNS. OpenDNS перехватывает ошибки разрешения DNS и вместо этого открывает спам-страницу поиска. (Страница guide.opendns.comIIRC.)

Эта страница поиска смазывается Tampermonkey. Ваш сценарий может искать сообщения "недоступных" OpenDNS и знать, что сайт отключен.

(2)Используйте AJAX, чтобы опрашивать заголовкистраниц и перезагружать их только тогда, когда страница включена и находится в сети.

Используйте GM_xmlhttpRequest () (или jQuery), чтобы сделать head запрос. Если в запросе произошел сбой, сайт отключен, не перезагружайте страницу.

Аналогично, если Last-Modified заголовок такой же, как при последней проверке, тогда нет смысла перезагружать страницу (обычно).

Как уже упоминалось в комментариях:

Заверните страницу в <iframe> и выполнить скрипт пользователя в родительском. Как только соединение обрывается, Chrome должен продолжить выполнение сценария Users в родительском объекте, поскольку он все еще загружается, в отличие от iframe, который не сможет загрузиться, как только вы обновите его. Обратите внимание, что у вас могут возникнуть некоторые проблемы с политикой того же происхождения: на самом деле вы не сможете заметить, что iframe не удалось загрузить.

Другие вопросы по тегам