2016-07-12 13 views
2

Ich konnte eine neue Registerkarte laden, aber Skript vor dem Laden der Seite ausgeführt.Chrome Extension erstellen Sie eine neue Registerkarte, warten Sie, bis es vollständig geladen wird, führen Sie ein Skript

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

bg.js:

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

    }); 

}); 

Ich versuchte chrome.tabs.executeScript mit zusammen mit chrome.tabs.onUpdated.addListener aber dann auch die neuen Registerkarte gewonnen nicht öffnen. Ein Beispiel wäre nett.

Antwort

5

Der Rückruf zu create tritt auf, wenn die Registerkarte erstellt wurde, aber nicht unbedingt, wenn die Seite geladen wurde. Sie müssen dem Ereignis onUpdated auch einen Listener hinzufügen und sich das Objekt changeInfo ansehen, das an seinen Rückruf für die status übergeben wird.

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');" 
     }); 
    } 
}