javascript - 在 Chrome/Chromium 插件中检查互联网连接;加载的图像已缓存

标签 javascript google-chrome google-chrome-extension

我正在尝试检查 Chrome 插件中是否存在互联网连接。虽然有可用的 API 调用建议进行检查,但理论上它只检查是否有可能的互联网连接。 为了获取此信息,我尝试加载图像

checkConnection() {
    var newImg = new Image;
    newImg.src = url;
    newImg.onload = function() { ... }
    newImg.onerror = function() { ... }
}

我确实使用 Image 对象来避免在使用带有 JavaScript 的 get 请求时发生的所有这些同源策略问题(我使用的是插件中的代码,因此没有地址与我的代码:/)。原则上,我上面的代码有效。我有一个每隔一段时间调用 checkConnection 的 setTimeout。但是,当图像成功加载一次(每次插件重新加载)时,它会存储在缓存中,并在连接失败时从那里加载。

你知道如何绕过这个问题吗?或者您是否知道一种聪明的方法可以从 Chrome 插件检查互联网连接,而无需设置可能容忍我的请求来源的服务器?

最佳答案

我知道你有 3 个选项......

正在检查互联网连接

快速谷歌搜索后,我找到了 navigator.onLine .看起来您可以使用它来检查互联网连接,但它并不总是完全准确。

停止缓存图片

如果您可以控制托管图像的域,您可以设置 header 告诉浏览器不要缓存图像。

Cache-Control: no-cache, must-revalidate // HTTP/1.1
Expires: Sat, 26 Jul 1997 05:00:00 GMT // Date in the past

如果您无法控制域,请在加载图像时尝试使用随机数或当前时间戳将 GET 变量附加到 URL。

例如

https://example.com/image.png?time=1496222683
https://example.com/image.png?time=1496223323
https://example.com/image.png?time=1496222313

这可以诱使浏览器认为您正在请求新资源。

关于javascript - 在 Chrome/Chromium 插件中检查互联网连接;加载的图像已缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280704/

相关文章:

javascript - MongoDB 计数和结果

windows - Windows 如何知道文件是否是从 Internet 下载的?

CSS3 动画曾在 webkit 浏览器中运行,但不再运行

javascript - Chrome 用户脚本

javascript - Chrome 扩展 - 在全屏视频顶部显示自定义通知/弹出窗口(HTML 元素)

javascript - Chrome 扩展 search_url_post_params 搜索提供程序覆盖

javascript - 将图像添加到 svg -> tspan 标记时遇到问题

javascript - 在将 Draggable 放到贪婪的 Droppable 上并再次拖动后,droppable 的 Over 事件无法正常工作

javascript - 我如何在 twitter bootstraps 弹出窗口中显示链接和更多内容?

javascript - 如何使 chrome 扩展热键适用于所有选项卡?