Использование JavaScript и Greasemonkey для перезагрузки только одной вкладки в Firefox?


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.

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


http://ww.bbc.co.uk не существует?
Лаужин

Извините - это была просто опечатка
Нил Спенсер,

Ответы:


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);

1
Блестящий - большое спасибо за это. Теперь скрипт действительно работает только на той странице, которую я хочу, а не на всех страницах.
Нил Спенсер

2

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


1
Да, но каждый раз, когда я открываю Firefox и захожу на сайт, мне нужно активировать ReloadEvery. Я хотел бы, чтобы перезагрузка автоматически активировалась, просто перейдя на страницу. Javascript выше делает это, но также перезагружает все остальные открытые вкладки.
Нил Спенсер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.