2013-07-30 13 views
5

Google Chrome eklenti API'sı chrome.devtools.inspectedWindow'u kullanarak şu anda açık olan pencerede bilgi sağlar, ancak değiştiğinde etkinlikler sağlamaz. Sayfayı yenileyebilir veya yönlendirebilir ve bildirilmek üzere eklediğim DevTools panelini beğenirim. Bunun için bir yöntem var mı?chrome.devtools.inspectedWindow değiştir olayı

Öğeler panelini düşünün, her zaman mevcut DOM ile güncel kalır. Bu, bir DOM mutasyonu gerçekleştiği zamanki gibi güncel kalmak için uygulanması zor olabilir, ancak yeni bir sayfa yüklendiğinde (muhtemelen document.onload olayında, en azından bildirilmek istiyorum), neden olmasın)

Bunu nasıl uygulayacağınıza dair herhangi bir fikir, teşekkürler?

cevap

10

Güncelleştirme gerçekleştiğinde chrome.webNavigation olaylarından birini ve notify devtools'u dinleyin.

Denetlenen sayfanın kaldırıldığını algılamanın başka bir yolu, chrome.devtools.network.onNavigated olayını kullanmaktır (yalnızca devtools uzantı sayfanızda kullanılabilir).

+0

Tamam, bana bir ipucu verdiğin için teşekkürler, burada oluşturmak istediklerimin daha dar bir açıklaması var, belki arka plan, sayfalar ve devtools komut dosyaları arasındaki mesajlaşma zor olabileceğinden bana biraz daha doğru API yöntemlerini gösterebilirsin . Belirli bir JS çerçevesini kullanan sayfalardan bazı global değişkenlere dayalı bazı istatistikler göstermek istiyorum. Bu yüzden, şu an açılan sayfanın çalışma zamanı JS değişkenlerine devrools sayfamın içinden erişmem gerekiyor. Mümkün mü? Teşekkürler – treznik

+1

Evet, bu mümkün. Bir tuş eklemenizi öneririm, böylece kullanıcı kodunuzu manuel olarak tetikleyebilir (global değişkenleri kontrol eder). Bağladığım API'lar başlamanıza yetecek kadar. Takıldığın zaman haber ver. –

+0

Tamam, chrome.webNavigation.onCompleted işleyicileri, arka plan komut dosyası aracılığıyla bağımsız devoller panellerine bağlamayı başardım. Şimdiye kadar çok iyi, ama bu tablonun global değişkenlerine erişmek için https://developer.chrome.com/extensions/webNavigation.html#event-onCompleted temel 'detaylar 'param' dan nasıl alabilirim? Teşekkürler – treznik

4

Aynı zorlukla karşılaştım ve bu Google'da bulduğum tek sonuçtu, bu yüzden bulduğum çözümle yanıtlamak istedim. Anahtar, chrome.devtools.inspectedWindow'da değil, chrome.tabs.onUpdated'da bulunur. Aslında, genel olarak çok daha yararlı olması için chrome.tabs.* buldum. Eklentimdeki durum değişikliklerini izlemek için kullanıyorum kod İşte;

chrome.tabs.onUpdated.addListener(function (tabId, changes, tabObject) { 
    console.log("Status of", tabId, "is", changes.status); 
    if (changes.status == "complete") { 
    console.log("Tab Load Complete"); 
    } 
}); 

Ayrıca durum değişikliği geçerli sekme veya olmasın tarihinde meydana olmadığını kontrol etmek için chrome.tabs.* API kullanabilirsiniz.

+1

OP'nin sorduğu devrools sayfasında chrome.tabs kodunu kullanamazsınız. Seni reddetmeyeceğim, çünkü bazı insanlar çözümünüzü faydalı bulmuş gibi görünüyor, ama bir Devtools paneli yapmaya çalıştıklarından şüpheliyim. – WORMSS