我创建的Chrome扩展程序按预期工作,只是在我加载与清单中的条件匹配的页面时才会执行。我已经尝试了几个小时来通过点击扩展图标来执行它无济于事。
我能够得到的最接近的是我能够使扩展图标单击以运行代码,但是它不会在加载的页面上运行它。它在扩展的空间而不是页面DOM上运行它。
在当前状态下,我的代码仅在指定域中的页面打开时运行。我想只在匹配该规则时才运行它,但只有当我点击扩展图标时才会运行它。
这是我的代码: 的的manifest.json
{
"name": "Get Response URL",
"version": "1.0",
"manifest_version": 2,
"browser_action": {
"default_icon": "mkto_icon.png",
"name": "Click to get URL"
},
"content_scripts": [{
"js": ["contentscript.js"],
"matches": ["http://mydomain.com/*"]
}]
}
contentscript.js
if (document.getElementsByName("returnURL")){
alert("\nThe Response URL on this form is:\n\n" + document.getElementsByName("returnURL")[0].value);
}
答案 0 :(得分:38)
我认为你想在
时运行代码如果是这样,你有用 背景页与Tabs API结合使用。
这是您的用例的示例演示,您可以放置所有代码并为所有匹配URL分配权限。
已注册的背景页面,浏览器操作和目标页面的权限。
{
"name": "Get Response URL",
"version": "1.0",
"manifest_version": 2,
"browser_action": {
"name": "Click to get URL"
},
"background":{
"scripts":["background.js"]
},
"permissions":["https://www.google.co.in/*"] //Put All your URL here
}
将所有目标匹配网址放在一系列if条件
中chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON
if (tab.url.indexOf("https://www.google.co.in/") != -1) { // Inspect whether the place where user clicked matches with our list of URL
chrome.tabs.executeScript(tab.id, {
"file": "contentscript.js"
}, function () { // Execute your code
console.log("Script Executed .. "); // Notification on Completion
});
}
});
alert("Code Executed ... ");
当您浏览到https://www.google.co.in/并点击浏览器操作后,您会在页面中看到警报。
答案 1 :(得分:2)
使用browserAction API,请参阅here
onClick事件可能会对您有所帮助。另请参阅Google的these exsamples: