2010-01-27 11 views
39

मैं पृष्ठभूमि पृष्ठ में एक श्रोता का उपयोग कर रहा है पता करने के से पता करने के लिए:क्रोम एक्सटेंशन: कैसे जब एक टैब लोड किया जाता है जब एक टैब, लोड हो जाए, पृष्ठभूमि पृष्ठ

chrome.tabs.onUpdated.addListener(function (tabId) { }) 

लेकिन श्रोता निकाल दिया जाता है दो बार: जब पृष्ठ लोड करना शुरू हो गया है, और जब पृष्ठ समाप्त हो गया है। क्या दो मामलों को अलग करने का कोई तरीका है?

+0

पता करने के लिए एक टैब

function createTab (url) { return new Promise(resolve => { chrome.tabs.create({url}, async tab => { chrome.tabs.onUpdated.addListener(function listener (tabId, info) { if (info.status === 'complete' && tabId === tab.id) { chrome.tabs.onUpdated.removeListener(listener); resolve(tab); } }); }); }); } 
तो

खोलने के बाद यह करने के लिए एक आसान तरीका चाहते थे ** लोड हो रहा है, https देखें: // stackoverflow.com/questions/19191679/chrome-extension-inject-js-before-page-load/19192010#19192010 – Pacerier

उत्तर

61

सौभाग्य से समाधान मिला है।

एक additional parameter कि स्थिति मान रखती है:

chrome.tabs.onUpdated.addListener(function (tabId , info) { 
    if (info.status === 'complete') { 
    // your code ... 
    } 
}); 

स्थिति या तो loading या complete हो सकता है।

+1

नहीं है); अंत में लापता? – Lawand

+1

पीएस नोट यह पृष्ठभूमि स्क्रिप्ट के लिए अच्छा है। सामग्री स्क्रिप्ट के लिए, बस विंडो के साथ 'window.onready' –

+1

@ पीटर एहरलिच समस्या का उपयोग करें। पहले से ही यह डीओएम लोड होने पर ही आग लग जाती है। यदि आप जीमेल जैसी साइटों की कोशिश करते हैं जो डेटा प्राप्त करता रहता है, तो यह तुरंत आग लग जाता है। – Volatil3

5

मैं यह होगा जब एक टैब ** शुरू होता है

let tab = await createTab('http://google.com'); 
संबंधित मुद्दे