Sử dụng JavaScript và Greasemonkey để tải lại chỉ một tab trong Firefox?


8

Tôi chưa quen với Greasemonkey và javascript nhưng đã tìm thấy tập lệnh bên dưới để tải lại một trang sau mỗi 5 phút.

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

Điều này hoạt động nhưng nó tải lại tất cả các tab đang mở cứ sau 5 phút và không chỉ một tab được chỉ định trong câu lệnh @include.

Có cách nào để làm điều này?


http://ww.bbc.co.uk không tồn tại?
Laoujin

Xin lỗi - đó chỉ là một lỗi đánh máy
Neil Spencer

Câu trả lời:


8

Mã đó có khối siêu dữ liệu bị hỏng , các khoảng trắng rất quan trọng đối với khối đó và các khoảng trắng thừa ở đầu dòng có thể phá vỡ nó - khiến tập lệnh kích hoạt tất cả các trang (hành vi mặc định).

Cập nhật: Sự xuất hiện của một khối bị hỏng có thể chỉ là một lỗi hiển thị ở đây tại SuperUser. Sẽ điều tra trong một chút.
Trình cập nhật: Khối bị hỏng là có thật, mã của OP được thụt vào bởi một hỗn hợp các tab và khoảng trắng, đánh lừa trình soạn thảo bài thô của SU, nhưng không hiển thị cuối cùng.

Ngoài ra, lệnh @includenày chỉ định một trang web không tồn tại. ww., so với www.. Dòng đó phải là:

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

Hoặc có thể:

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

nếu bạn muốn nhiều hơn chỉ là trang chủ thực hiện.

Kết hợp tất cả lại và sử dụng setTimeouttheo cách được đề xuất (Tránh sử dụng "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
Rực rỡ - cảm ơn rất nhiều vì điều này. Kịch bản bây giờ thực sự chỉ hoạt động trên trang tôi muốn chứ không phải tất cả các trang.
Neil Spencer

2

Tôi không chắc chắn làm thế nào để làm điều này trong Javascript, nhưng Firefox có một addon gọi ReloadEvery . Cài đặt nó, khởi động lại FF và sau đó nhấp chuột phải vào trang và chọn Tải lại và thời gian.


1
Có - nhưng sau đó mỗi khi tôi mở Firefox và truy cập trang web, tôi cần kích hoạt Tải lại. Những gì tôi muốn là để tải lại được tự động kích hoạt chỉ bằng cách đi đến trang. Các javascript ở trên thực hiện điều này nhưng cũng tải lại tất cả các tab khác đang mở.
Neil Spencer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.