Menggunakan JavaScript dan Greasemonkey untuk memuat ulang hanya satu tab di Firefox?

8

Saya baru mengenal Greasemonkey dan javascript tetapi telah menemukan skrip di bawah ini untuk memuat ulang halaman setiap 5 menit.

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

Ini berfungsi tetapi reload semua tab terbuka setiap 5 menit dan bukan hanya yang ditentukan dalam pernyataan @include.

Apakah ada cara untuk melakukan ini?

Neil Spencer
sumber
http://ww.bbc.co.uk tidak ada?
Laoujin
Maaf - itu hanya salah ketik
Neil Spencer

Jawaban:

8

Kode itu memiliki blok metadata yang korup , spasi sangat penting untuk blok itu, dan spasi tambahan di awal baris dapat memecahnya - menyebabkan skrip menyala untuk semua halaman (perilaku default).

Pembaruan: Munculnya blok yang rusak mungkin hanya bug tampilan di sini di SuperUser. Akan menyelidiki sedikit.
Pembaru: Blok korup adalah nyata, kode OP diindentasi oleh campuran tab dan spasi, yang mengelabui editor mentah SU, tetapi bukan tampilan akhir.

Juga, @includearahan tersebut menentukan halaman web yang tidak ada. ww., versus www.. Baris itu seharusnya:

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

Atau mungkin:

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

jika Anda ingin lebih dari sekadar beranda terpengaruh.

Menyatukan semuanya dan menggunakan setTimeoutdengan cara yang disarankan (Hindari penggunaan "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);
Brock Adams
sumber
1
Cemerlang - terima kasih banyak untuk ini. Script sekarang memang hanya beroperasi pada halaman yang saya inginkan daripada semua halaman.
Neil Spencer
2

Saya tidak yakin bagaimana melakukan ini dalam Javascript, tetapi Firefox memiliki tambahan yang disebut ReloadEvery . Instal, restart FF dan kemudian klik kanan pada halaman dan pilih ReloadEvery dan waktu.

David
sumber
1
Ya - tetapi kemudian setiap kali saya membuka Firefox dan pergi ke situs web saya perlu mengaktifkan ReloadEvery. Yang saya inginkan adalah untuk memuat ulang secara otomatis diaktifkan hanya dengan pergi ke halaman. Javascript di atas melakukan hal ini tetapi juga memuat ulang semua tab lain yang terbuka.
Neil Spencer