【问题标题】:extension programming: where should the logic and dynamic behavior exist? background js, content_script, popup js扩展编程:逻辑和动态行为应该存在于哪里?背景js,content_script,弹出js
【发布时间】:2018-05-30 02:56:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 在 chrome 中,您可以在事件页面中使用 declarativeContent API 来为您的页面操作注册 URL,example
  • @wOxxOm 我认为我想在 URL 上执行的操作无法使用 declarativeContent 实现。必须进行服务调用以确定 URL 是否合格。

标签: javascript browser plugins google-chrome-extension


【解决方案1】:

我认为对于您正在做的事情,您应该查看页面操作。页面操作默认显示为灰色,但您可以选择显示它们。 查看How do I make page_action appear for specific pages?,您可以通过遍历您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多