javascript - 扩展编程:逻辑和动态行为应该存在于哪里?背景js,content_script,弹出js
问题描述
我想创建一个执行以下操作的扩展:
- 有一个 pageaction 或 browseraction(不确定哪个更合适)。
- 如果在我的数据库/服务中找到该页面的 url,则允许操作具有/显示一个弹出窗口,其中显示来自我的服务的一些信息。
- 否则,使操作按钮看起来被禁用并且不显示任何弹出窗口
我一直在尝试使用弹出窗口的背景脚本。无法在我的服务结果中显示弹出集中的内容。对于后台和弹出窗口之间的通信,我在这里使用了建议:How to communication between popup.js and background.js in chrome extension?但没有设法让它发挥作用。并且调试弹出窗口几乎是不可能的。
我尝试在主页中使用 content_script 创建一个 iFrame。那根本不顺利。很多跨帧异常。
解决方案
我认为对于您正在做的事情,您应该查看页面操作。页面操作默认显示为灰色,但您可以选择显示它们。看看如何让 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
推荐阅读
- python - 当另一个变量最后一次等于 1 时赋值 1
- javascript - 前端的新日期()格式与后端的新日期()不同
- rx-java - RxJava 将对象与列表合并/合并
- excel - 如何使用 Powershell 脚本导出与特定 IIS 站点相关的证书详细信息
- javascript - 如何从 javascript 函数调用 vuejs 函数?
- javascript - node.js 无法从 ionic 4 发出 post 请求
- html - VBA。从站点解析数据
- ruby - ruby MS windows gem:win32/daemon:Service_Main线程异常退出
- nginx - Nginx 的 sub_filter 不会替换 CSS 和 JS 中的路径
- android - 棒棒糖设备上未安装 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 应用程序