Chrome扩展程序:创建一个新标签页,等待它完成加载,执行脚本

Shi*_*hen 5 google-chrome-extension

我已经能够加载一个新的选项卡,但脚本在页面加载之前执行.

manifest.json:

{
  "manifest_version": 2,
  "name": "cpClips",
  "version": "1.0",
  "description": "cpClips extension to download videos from streaming sites.",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["bg.js"],
    "persistent": false
  },
  "permissions": [
    "tabs"
  ]
}
Run Code Online (Sandbox Code Playgroud)

bg.js:

chrome.browserAction.onClicked.addListener(function(activeTab)
{
    chrome.tabs.create({ url: 'http://127.0.0.1:8000' },function(tab) {
        alert('hi');

   });

});
Run Code Online (Sandbox Code Playgroud)

我试着用chrome.tabs.executeScript沿chrome.tabs.onUpdated.addListener,但随后连新标签将不会打开.

一个例子很好.

Gid*_*zer 7

create在创建选项卡时发生回调,但在加载页面时不一定发生回调.您还需要为onUpdated事件添加一个监听器,并查看changeInfo传递给它的回调对象status.

chrome.browserAction.onClicked.addListener(function(activeTab)
{
    chrome.tabs.create({url:'http://127.0.0.1:8000'}, function(tab) {
    });
});

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    // make sure the status is 'complete' and it's the right tab
    if (tab.url.indexOf('127.0.0.1:8000') != -1 && changeInfo.status == 'complete') {
        chrome.tabs.executeScript(null, { 
            code: "alert('hi');" 
        });
    }
});
Run Code Online (Sandbox Code Playgroud)