首页 > 解决方案 > 扩展编程:逻辑和动态行为应该存在于哪里?背景js,content_script,弹出js

问题描述

我想创建一个执行以下操作的扩展:

  1. 有一个 pageaction 或 browseraction(不确定哪个更合适)。
  2. 如果在我的数据库/服务中找到该页面的 url,则允许操作具有/显示一个弹出窗口,其中显示来自我的服务的一些信息。
  3. 否则,使操作按钮看起来被禁用并且不显示任何弹出窗口

我一直在尝试使用弹出窗口的背景脚本。无法在我的服务结果中显示弹出集中的内容。对于后台和弹出窗口之间的通信,我在这里使用了建议:How to communication between popup.js and background.js in chrome extension?但没有设法让它发挥作用。并且调试弹出窗口几乎是不可能的。

我尝试在主页中使用 content_script 创建一个 iFrame。那根本不顺利。很多跨帧异常。

标签: javascriptbrowserpluginsgoogle-chrome-extension

解决方案


我认为对于您正在做的事情,您应该查看页面操作。页面操作默认显示为灰色,但您可以选择显示它们。看看如何让 page_action 出现在特定页面上?您可以通过遍历您的 URL 列表来更新它

function checkForValidUrl(tabId, changeInfo, tab) {
    chrome.storage.local.get(['urls'], function(result) {
        for (var item in result.urls) {
            if (tab.url.indexOf(item) > -1) {
                chrome.pageAction.show(tabId);
                //set url to the URL you want for the popup
                chrome.pageAction.setPopup({tabId: tabId, popup: url})
                //or you could create a new window - see https://developer.chrome.com/extensions/windows.html#method-create
            }
        }
    });
}

chrome.tabs.onUpdated.addListener(checkForValidUrl);

编辑:对不起,我现在意识到您实际上是在尝试调试弹出窗口。希望这有助于检查 URL


推荐阅读