繁体   English   中英

每隔几秒刷新一次外部网页

[英]Refresh an external webpage every few seconds

对于工作,我花了很多时间在特定领域的论坛上。 一整天,我都会查看这些论坛,看看是否有任何与我的工作相关的问题和答案。 但是,我使用的特定站点不会自动更新,因此我必须刷新它。 这没什么大不了的,但我决定将以下 JavaScript 脚本保存为书签:

setInterval(function() { document.location.reload(true); }, 1000);

本质上,我想强制页面每秒重新加载。 但是,当它重新加载时,它似乎会导致我的脚本停止运行,因此我的脚本的唯一效果是一次重新加载。 这并不比手动刷新站点更好。

我想更普遍的问题是“即使用户访问新站点,有没有办法保持脚本运行?” 我猜不是,因为当您浏览互联网的其余部分时,网站可以跟踪您。 不过,似乎脚本执行是有层次的; 也许从书签执行脚本与网页上的 <script> 标签不同; 如果我是浏览器设计师,我会考虑到这一点,并将其视为独立于当前加载页面在幕后运行的“浏览器代码”。 这是浏览器的工作方式,还是将所有脚本视为仅在当前加载的页面上运行?

谢谢!

“有没有办法让脚本在用户访问新站点时保持运行?我猜不是。”

是的。 好吧,您必须考虑客户端-服务器基础架构。 每当浏览器重新加载时,它都必须向服务器发送一个新请求,这在技术上会杀死当前 DOM 中所有正在运行的 JS 进程。 这就是为什么仅使用setInterval本身也不起作用,因为该进程已被终止并且永远不会进行新的重新加载。

解决方案:您必须使用用户脚本

为了完成这项工作,您必须将脚本单独放在浏览器的上下文中,而不是客户端-服务器架构中。 这样,由于执行的上下文是浏览器而不是 DOM,因此页面刷新不会终止 JS 进程。 该进程仅在您关闭浏览器时终止。

如果您使用 Chrome,请查看 Chrome 扩展程序Tampermonkey我相信这是在浏览器中管理用户脚本的最佳方式。 通过创建新脚本添加您的脚本,保存,然后在脚本设置下,在用户匹配项下添加您的目标站点

在此处输入图片说明

限制:此解决方案仅适用于您自己(他们可以在您自己的浏览器上安装扩展程序或添加用户脚本),而不适用于网站的其他用户,因为我们在客户端-服务器上下文之外。

请按照以下步骤操作:

1. Install Tampermonkey as a Chrome extension
2. On Tampermonkey add a user script (+) and paste the follwing code
3. 

// ==UserScript==
// @name         Reload Page
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Reload given web page at a given pace (10 minutes in this case)
// @author       Your name or nick ;)
// @match        http://address_of_web_page_to_reload
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var minutes = 10;
    setTimeout (function(){ location.reload(); }, minutes*60*1000);
})();
  1. 保存脚本并使用所需地址打开一个新网页
  2. 检查页面是否每 10 分钟刷新一次!
  3. 玩得开心! 皮布

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM