8

Я новичок в Greasemonkey и javascript, но нашел скрипт ниже для перезагрузки страницы каждые 5 минут.

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://ww.bbc.co.uk
    // @grant               none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
window.setTimeout("document.location.reload();", numMinutes*60*1000);

Это работает, но перезагружает все открытые вкладки каждые 5 минут, а не только ту, которая указана в операторе @include.

Есть ли способ сделать это?

2 ответа2

8

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

Обновление: появление поврежденного блока может быть просто ошибкой отображения здесь, в SuperUser. Будем расследовать немного.
Updatier: поврежденный блок является реальным, код OP имеет отступ от комбинации вкладок и пробелов, которые одурачили редактор необработанных сообщений SU, но не окончательное отображение.

Кроме того, директива @include указывает веб-страницу, которая не существует. ww. по сравнению с www. , Эта строка должна быть:

// @include     http://www.bbc.co.uk/

Или возможно:

// @include     http://www.bbc.co.uk/*

если вы хотите больше, чем просто домашняя страница.

Собираем все вместе и используем setTimeout рекомендуемым способом (избегайте использования "auto eval ()"):

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://www.bbc.co.uk/
// @grant       none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
setTimeout (location.reload, numMinutes*60*1000);
2

Я не уверен, как это сделать в Javascript, но у Firefox есть дополнение, называемое ReloadEvery. Установите его, перезапустите FF и затем щелкните правой кнопкой мыши на странице и выберите ReloadEvery и время.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .