我正在尝试在用户按下我的Chrome扩展程序时按需触发的任何页面上创建一个jquery弹出窗口。
我将权限设置为[“标签”,“http:// / ”,“https:// / ”]
我有一个背景页面,尝试执行以下操作:
chrome.browserAction.onClicked.addListener(function(tab) {
//chrome.tabs.executeScript(null, { code: "alert(document.title);" }, null);
chrome.tabs.executeScript(null, {file: "demo.js"}, null);
chrome.tabs.executeScript(null, { code: "document.body.appendChild(document.createElement('script')).src='demo.js'" }, null);
});
如果我取消注释警报,则会在点击扩展程序图标时显示。 但随着评论,因为它没有做任何事情。
为什么失败了?
UPDATE 我通过引用url而不是本地资源(demo.js)设法使其工作。 现在,有效的代码如下所示:
chrome.tabs.executeScript(tab.id, { code: "document.body.appendChild(document.createElement('script')).src='http://iamnotagoodartist.com/stuff/wikiframe.js'" }, null);
我的本地“demo.js”无论如何都是该网址内容的副本。 当我引用本地文件时,我不确定为什么它不起作用??
答案 0 :(得分:0)
您没有将tab
ID传递给executeScript
,因此脚本会被注入到您无法与之交互的背景页面中。
chrome.tabs.executeScript(tab, {file: "demo.js"}, null);
答案 1 :(得分:0)
您必须使用chrome.extension.getURL获取“demo.js”文件的完整路径。
chrome.tabs.executeScript(null, {
code: "document.body.appendChild(document.createElement('script')).src='" +
chrome.extension.getURL("demo.js") +"';"
}, null);
BTW如果您将tabId参数设置为null,则不会将脚本注入后台页面而是注入the selected tab of the current window。