执行Chrome扩展程序onclick而不是页面加载

时间:2013-03-01 02:14:08

标签: google-chrome-extension

我创建的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);
    }

2 个答案:

答案 0 :(得分:38)

我认为你想在

时运行代码
  • 用户点击了浏览器操作ICON和
  • 网址格式匹配

如果是这样,你有用  背景页与Tabs API结合使用。

示范

这是您的用例的示例演示,您可以放置​​所有代码并为所有匹配URL分配权限。

的manifest.json

已注册的背景页面,浏览器操作和目标页面的权限。

{
        "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
 }

background.js

将所有目标匹配网址放在一系列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
        });
    }
});

contentscript.js

alert("Code Executed ... ");

输出

当您浏览到https://www.google.co.in/并点击浏览器操作后,您会在页面中看到警报。

参考

答案 1 :(得分:2)

使用browserAction API,请参阅here

onClick事件可能会对您有所帮助。另请参阅Google的these exsamples