无需插件即可在 Chrome 中自动重新加载页面

jon*_*jon 18 google-chrome

使用 Firefox 或 Chrome 的 TabMixPlus 插件,我可以右键单击一个页面并选择“重新加载每个...”,我可以选择一个间隔。

我不想安装插件,除非我真的需要,而且我知道你可以在 Chrome 的地址栏中输入特殊的东西。

这让我认为直接输入地址的类似内容可能会起作用:

javascript:setInterval(window.location.reload(), 2000); //2 secs`
Run Code Online (Sandbox Code Playgroud)

我还没有管理它,但仍然不想排除它的可能性。

这可能吗?

jon*_*jon 25

6年后,我有一个解决方案!

答案的灵感来自此处的其他答案。

Edub 的回答对我不起作用,它一遍又一遍地重新加载页面,并且没有观察到setInterval的持续时间参数。我不明白为什么 Edub 的回答没有按预期工作。

这在 Chrome 67 中对我有用:

javascript:document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\"><\/iframe>";reloadTimer = setInterval(function(){ document.getElementById("testFrame").src=document.getElementById("testFrame").src },10000)
Run Code Online (Sandbox Code Playgroud)

格式化版本:

document.getElementsByTagName("body")[0].innerHTML = 
"<iframe id=\"testFrame\" 
        src=\"" + window.location.toString() + "\" 
      style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\">
<\/iframe>";
reloadTimer = setInterval(
    function(){ 
        document.getElementById("testFrame").src=document.getElementById("testFrame").src
    },
    10000
)
Run Code Online (Sandbox Code Playgroud)

这是通过用指向窗口当前位置的 iframe 替换当前文档正文来实现的。

然后调用 setInterval ,使页面在计时器上重新加载。

这可以很好地用作书签。setInterval 的补充函数也可以通过书签调用:javascript:clearTimer(reloadTimer)

笔记:

  • 一些站点检测到它们正在通过 iframe 访问并试图阻止访问(例如堆栈站点!)

  • 浏览器javascript:在粘贴到地址栏中时会去掉前缀,因此必须手动输入。但是,javascript:如果通过书签输入,则不会被删除。


Jus*_*ser 12

您可以使用组合键通过 Chrome 开发人员工具来完成ctrl+shift+j。加载你想要的页面,例如:http : //www.w3schools.com/jsref/dom_obj_frame.asp然后点击ctrl+shift+j打开开发者工具。右键单击 body 标签并选择 edit as html 用以下内容替换内部内容(保持标签和结束标签不变):

<iframe id="testFrame" src="http://www.w3schools.com/jsref/dom_obj_frame.asp" style="position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;" onload="setInterval(document.getElementById('testFrame').contentWindow.location.reload(), 10000);"></iframe>

要停止编辑为 html,您可以点击esc或单击您正在编辑的标签之外的标签之一。该页面应每 10 秒开始重新加载,如果您愿意,可以关闭开发人员工具,它会继续刷新,无需插件:)


小智 5

进一步借鉴 Justin Buser 的解决方案,我得出:

document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\" onload=\"setInterval(document.getElementById(\'testFrame\').contentWindow.location.reload(), 10000);\"><\/iframe>"
Run Code Online (Sandbox Code Playgroud)

将网站嵌入到 iframe 中以便能够重新加载它的想法效果很好(我猜)。我刚刚编写了一些代码来获取 body 元素,并将 insidehtml 替换为当前 url 的 Iframe。

通过这种方式,可以为某些 JavaScript 代码添加书签,并在任何站点上触发它以重新加载它。希望能帮助到你。