Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 点击和页面加载时的Chrome扩展_Javascript_Json_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 点击和页面加载时的Chrome扩展

Javascript 点击和页面加载时的Chrome扩展,javascript,json,google-chrome,google-chrome-extension,Javascript,Json,Google Chrome,Google Chrome Extension,有没有办法让chrome扩展在页面加载和点击时运行 如果用户在某个页面上,我希望扩展运行并将脚本附加到已加载页面的页眉 然后,我希望用户能够单击扩展,该扩展运行一个不同的脚本来调用页面上的脚本 我在页面加载中看到了以下内容: chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) { if (changeInfo.status == 'complete' && tab.active) {

有没有办法让chrome扩展在页面加载和点击时运行

如果用户在某个页面上,我希望扩展运行并将脚本附加到已加载页面的页眉

然后,我希望用户能够单击扩展,该扩展运行一个不同的脚本来调用页面上的脚本

我在页面加载中看到了以下内容:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {

    // run script/code here

  }
})
我在点击时使用了以下内容:

chrome.browserAction.onClicked.addListener(function (tab) {
    if (tab.url.indexOf(".mydomain.com/") != -1) {
        chrome.tabs.executeScript(tab.id, {
            "file": "contentscript.js"
        }, function () {
            console.log("Script Executed...");
        });
    } else {
        var wrongTab = chrome.i18n.getMessage("wrongTab");
        alert(wrongTab);
    }
});

但是我想将它们合并在一起,因为在页面中添加脚本似乎并不总是正确加载:/

用于始终加载您应该使用的特定页面,例如

这将自动应用于(重新)加载时匹配URL上的任何页面

当你想在点击时注入一个脚本(只在与第一个脚本相同的域中的页面上)时,我没有完全理解。如果要向现有内容脚本发送信号以执行某些操作,最好的方法是:

如果您想在任何页面中执行某些操作,而不仅仅是在注入的页面中,单击按钮-然后您必须使用
chrome.tabs.executeScript
。如果您希望该按钮仅在某些页面上激活,请考虑使用A。 另外,请注意所需的权限。如果要在单击处理程序中的选项卡上进行操作,这是一件好事

  "content_scripts" : [
    {
      "matches" : ["*://*.mydomain.com/*"],
      "js" : ["contentscript.js"]
    }
  ],
// contentscript.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
  if(message.doSomething){
    /* do something with message.data */
  }
});

// background.js
chrome.browserAction.onClicked.addListener(function (tab) {
  chrome.tabs.sendMessage(
    tab.id,
    {doSomething: true, data: "anything"},
    function(response) {
      if(chrome.runtime.lastError) {
        // There was no script listening
      }
    }
  );
});