我想做一个用户脚本(现在我只担心 Chrome 兼容性)每 30 秒重新加载一次页面(我的意思是,这不是重点,我只是想在互联网离线时以某种方式执行一些脚本),以防万一互联网出现故障,用户不在这里看到它。
现在,问题是,一旦互联网出现故障,页面将被重定向到“此网页不可用”,并且所有用户脚本都停止工作。
我已经尝试添加@include *
到元数据中,希望这将允许用户脚本在所述页面上工作,但是我没有成功。
我想做一个用户脚本(现在我只担心 Chrome 兼容性)每 30 秒重新加载一次页面(我的意思是,这不是重点,我只是想在互联网离线时以某种方式执行一些脚本),以防万一互联网出现故障,用户不在这里看到它。
现在,问题是,一旦互联网出现故障,页面将被重定向到“此网页不可用”,并且所有用户脚本都停止工作。
我已经尝试添加@include *
到元数据中,希望这将允许用户脚本在所述页面上工作,但是我没有成功。
Chrome 的“此网页不可用”显示不是具有“可润滑”方案的标准页面。这意味着 Tampermonkey 脚本和 Chrome 用户脚本不会为它触发。您必须制作一个成熟的Chrome 扩展程序。(这个问题的更多细节。)
有一些解决方法:
(1) 您可以将您的 DNS 提供商切换为OpenDNS 之类的提供商。OpenDNS 劫持 DNS 解析错误并提供垃圾邮件“搜索”页面。(页面是guide.opendns.com
,IIRC。)
该搜索页面可被Tampermonkey 润滑。您的脚本可以搜索 OpenDNS 的“不可用”消息并知道该站点已离线。
(2)使用 AJAX 轮询页面标题,并且仅在页面启动和在线时才重新加载。
使用GM_xmlhttpRequest()(或 jQuery)发出head
请求。如果请求出错,则该站点处于脱机状态,请不要重新加载页面。
同样,如果Last-Modified
标题与您上次检查时相同,则重新加载页面(通常)没有意义。
如评论中所述:
将页面包装在一个中<iframe>
并在父级中执行用户脚本。一旦连接断开,Chrome 应该继续在父级中执行用户脚本,因为它仍然在加载,不像 iframe,一旦你刷新它就无法加载。请注意,您可能会遇到一些同源策略困难:afaik 您将无法注意到 iframe 无法加载。