google-chrome - Chrome 扩展程序可监控信息亭并在需要时重新加载

标签 google-chrome google-chrome-extension kiosk

我有一个处理人物肖像的信息亭。它在 chrome 中运行。

使用自助服务终端的 200 人中就有 1 人在此过程中卡住。当它卡住时,我永远不会听到“啊啪”的声音,页面就挂了。

我想知道是否可以进行扩展以监视页面并检查心跳 - 如果 30 秒后没有看到它重新加载窗口。

任何帮助都会很棒。

最佳答案

  • 让信息亭页面中的内容脚本每 X 秒向后台页面发送一条消息

    在内容脚本中:
    var port = chrome.extension.connect({ name: "keep-alive" });
    
    port.postMessage('is-alive', { alive: true });
    
    setInterval(function () {
        port.postMessage('is-alive', { alive: true });
    }, 1000 * 15);
    
  • 如果后台页面检测到消息在一段时间后没有回来,则重新加载选项卡

    在后台页面:
    var last = Date.now();
    var interval = 1000 * 15;
    
    chrome.extension.onConnect.addListener(function (port) {
        if (port.name === 'keep-alive') {
            port.onMessage.addListener(function (data) {
                if (data.type === 'is-alive' && data.payload.alive === true) {
                    last = Date.now();
                }
            });
        }
    });
    
    setInterval(function () {
        if (Date.now() - last > interval) {
            // Reload the tab...
        }
    }, interval);
    

  • 有关重新加载选项卡的信息,请参阅 chrome.tabs 文档。您需要添加 tabs到 list 中的权限列表。

    如果您想了解有关消息传递的更多信息,请参阅 Messaging文档。

    关于google-chrome - Chrome 扩展程序可监控信息亭并在需要时重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11598988/

    相关文章:

    javascript - 如何在 Chrome 扩展程序中检测窗口最小化/最大化事件?

    javascript - 在 chrome.tabs.executeScript 中的 javascript 函数中传递参数

    google-chrome - 在Chromium 60以上版本中,是否存在键盘快捷键来显示或隐藏 'FPS meter'?

    android - 如何在 kiosk 模式和启用屏幕 pin 的设备中更新应用程序?

    objective-c - iPad Kiosk sleep 唤醒

    javascript - 如何用JavaScript测试浏览器是否接受cookies?

    javascript - 无法进行本地开发,错误为 : No 'Access-Control-Allow-Origin' header is present on the requested resource

    javascript - 所有选项卡 chrome 扩展的屏幕截图

    javascript - Chrome 和 Safari 中 Javascript 的奇怪行为

    css - Google Chrome 开发者工具 - 无法编辑 CSS