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

标签 javascript browser scripting wkuserscript

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

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

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

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

谢谢!

最佳答案

"is there any way to keep a script running even when a user travels to a new site? I'm guessing not."

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

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

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

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

下添加您的目标站点

enter image description here

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

关于javascript - 每隔几秒刷新一次外部网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105592/

相关文章:

java - 将 HTTP 响应发送/ channel 化回浏览器

shell - POSIX shell 中的换行符

javascript - ajax 加载指示器在中间停止

javascript - jQuery.ajax *仅*检索状态代码但不检索/下载整个文档?

javascript - 更改 Angular 中的第一个 ng-options 文本

html - 如果图像的最大宽度属性设置为某个值,则获取图像的宽度和高度

javascript - Nuxt Js asyncData 返回值表现得很奇怪。

java - 用java编写的浏览器和服务器之间的通信

testing - 我们如何在 SoapUI Pro 中使用 Groovy Script TestStep 将数组传递给方法?

file - 将扩展关联到程序的脚本