Використовуючи 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 не існує?
Laoujin

Вибачте - це була лише помилка
Ніл Спенсер

Відповіді:


8

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

Оновлення: Поява пошкодженого блоку може бути просто помилкою відображення тут у SuperUser. Дослідимо трохи.
Оновлення: Пошкоджений блок справжній, код OP відступає сумішшю вкладок і пробілів, які обдурили редактор SU-Post, але не остаточне відображення.

Крім того, @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.