【问题标题】:How to keep my userscript working, even when the site goes offline?即使网站离线,如何让我的用户脚本正常工作?
【发布时间】:2013-02-10 14:01:54
【问题描述】:

我想制作一个用户脚本(现在我只担心 Chrome 兼容性)每 30 秒重新加载一次页面(我的意思是,这不是重点,我只是想在互联网离线时以某种方式执行一些脚本),万一互联网出现故障并且用户不在这里看到它。

现在,问题是,一旦互联网出现故障,页面将被重定向到“此网页不可用”,并且所有用户脚本都停止工作。

我已经尝试将@include * 添加到元数据中,希望这将允许用户脚本在所述页面上工作,但是我没有成功。

【问题讨论】:

  • 我不明白你的问题是什么。您是否需要检测用户何时失去 Internet 连接,或者您在进行重定向时遇到问题?
  • 您是否尝试将页面包装在 iframe 中?
  • 即使 iframe 未成功加载,您的脚本也会保留。
  • 是的,我既需要检测用户何时失去互联网连接,又需要在发生这种情况时运行某个脚本(可能是每 30 秒重新加载一次页面)。问题是,一旦 Internet 出现故障,Tampermonkey(Chrome 运行用户脚本的扩展)就会停止执行用户脚本。
  • 我不知道 iframe 是什么,我将对此进行研究并希望尝试应用到我的案例中,谢谢!

标签: javascript google-chrome greasemonkey userscripts tampermonkey


【解决方案1】:

Chrome 的“此网页不可用”显示不是具有“可润滑”方案的标准页面。这意味着 Tampermonkey 脚本和 Chrome 用户脚本不会为它触发。你必须制作一个成熟的Chrome extension。 (更多详情请访问this question。)

有一些解决方法:

(1) 您可以将您的 DNS 提供商切换为像 OpenDNS 这样的提供商。 OpenDNS 劫持 DNS 解析错误并提供垃圾邮件“搜索”页面。 (页面是guide.opendns.com,IIRC。)

该搜索页面 可被 Tampermonkey 润滑。您的脚本可以搜索 OpenDNS 的“不可用”消息并知道该站点已离线。

(2)使用 AJAX 轮询页面标题,并且仅在页面启动并在线时重新加载。

使用GM_xmlhttpRequest()(或jQuery)创建a head request。如果请求出错,则表明站点处于离线状态,请勿重新加载页面。

同样,如果Last-Modified 标头与您上次检查时相同,则重新加载页面(通常)没有意义。

【讨论】:

  • DNS 解决方案很棒,可以完美运行,但问题是,它适用于不同的用户,所以这是不可能的。但是,我肯定会走 Chrome 扩展路径,这似乎是最明智和实用的方法。感谢您的帮助。
【解决方案2】:

如 cmets 中所述:

将页面包装在<iframe> 中并在父级中执行用户脚本。一旦连接断开,Chrome 应该继续在父级中执行用户脚本,因为它仍然在加载,不像 iframe,一旦你刷新它就无法加载。请注意,您可能会遇到一些同源策略困难:afaik 您将无法注意到 iframe 加载失败。

【讨论】:

  • 老实说,到目前为止,我还无法应用您的解决方案——我可以创建 iframe,但是如何将整个页面包装在 iframe 中?
  • 我使用 iframe 技巧来监控工作中的打印机。一个包含 10 个 iframe 的简单页面,每个 iframe 加载不同的打印机状态页面。每个 iframe 都设置为每 10 秒刷新一次。发挥了魅力
猜你喜欢
  • 2019-10-19
  • 1970-01-01
  • 2021-07-29
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多