google chrome extension :: console.log () arka plan sayfasından mı?


173

console.log('something');Açılır sayfadan veya kapalı herhangi bir komut dosyası ararsanız iyi çalışır.

Ancak, arka plan sayfası doğrudan açılır sayfadan çıkmadığı için konsola dahil edilmez.

console.log()Açılır sayfanın konsolunda görünmesi için arka plan sayfasında bulabilmemin bir yolu var mı ?

arka plan sayfasından açılan sayfada bir işlevi çağırmanın herhangi bir yolu var mı?


"İyi çalışıyor" diyerek tam olarak ne demek istiyorsun? "Bir şey" nerede okuyor? Pop-up pencerede console.log () kullanılması, yüklü sayfanın konsolunda yazdırılmamalıdır - soru 2 yaşında olduğundan API değişti mi?
anddam

14
tarayıcı işleminizde pop-up penceresini sağ tıklarsanız -> uzantınız için bir geliştirici araçları sayfası alırsınız. popup.js günlükleri buna yazdıracaktır.
not_shitashi

@ not_shitashi'nin yorumu bu sorunun cevabı olmalıdır.
gabe

Yanıtlar:


154

Herhangi bir uzantı sayfası ( içerik komut dosyaları hariç ) aracılığıyla arka plan sayfasına doğrudan erişebilir chrome.extension.getBackgroundPage().

Bu, açılır sayfada , şunları yapabilirsiniz:

chrome.extension.getBackgroundPage().console.log('foo');

Kullanımı kolaylaştırmak için:

var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');

Şimdi aynı şeyi içerik komut dosyalarında yapmak istiyorsanız, bunu başarmak için İleti Geçişi'ni kullanmanız gerekir . Nedeni, her ikisi de mantıklı olan farklı alanlara aittir. İleti İletme sayfasında kontrol etmeniz için birçok örnek vardır .

Umarım her şeyi temizler.


1
@MohamedMansour, bu çözüm benim için çalışmıyor. Eğer ben alert() chrome.extension.getBackgroundPage()alırsam null. İzinleri veya başka bir yapılandırmayı ayarlamam gerekir mi?
gwg

@gwg Uzantınızın arka plan sayfası var mı? Dokümana göre "Uzantının arka plan sayfası yoksa null döndürür." developer.chrome.com/extensions/…
Mohamed Mansour

Bu, kendi iletilerimin konsolda çalışması için mükemmel çalışıyor. Teşekkürler. Popup.js'den istisnalar vb. Yapma konusunda herhangi bir düşünce background.js konsolunda görünür?
steven_noble

195

Uzantılar listesindeki "background.html" bağlantısını tıklarsanız arka plan sayfasının konsolunu açabilirsiniz.

Uzantılarınıza karşılık gelen arka plan sayfasına erişmek için Settings / Extensionsyeni bir sekme açın veya açın ve girin chrome://extensions. Bu ekran görüntüsü gibi bir şey göreceksiniz.

Chrome uzantıları diyalogu

Uzantınızın altında bağlantıyı tıklayın background page. Bu yeni bir pencere açar. İçin içerik menüsü numunesi pencere başlığı vardır: _generated_background_page.html.


4
Şerefe, bunun farkındayım, ancak doğrudan arka plan sayfasını açmak açılır sayfadan hiçbir şey çağırmıyor.
Hailwood

Arka plan sayfası açıldığında konsol günlüğü bilgisi çıkmaz.
Layke

@Hailwood arka plan sayfasını açtığında hiçbir şey çağırmaz ancak konsol için arka plan sayfası gösterilir.
anddam

1
@Layke, arka plan sayfasını açtıktan sonra hala içine yazmak zorundasınız, yani doğrudan arka plan sayfasından console.log () kullanın veya mohamed-mansour'un söylediği gibi, getBackgroundPage ()
anddam

3
Bu soruyu bir uzantı çıkışını (OP gibi) nasıl kontrol edeceğimi araştırdım ve bir içerik sayfasından geçmeden konsol günlüğünü kontrol etmeme izin verdiğinden bu cevabı çok yararlı buldum.
anddam

66

Sorunuzu doğrudan cevaplamak için console.log("something"), arka plandan aradığınızda , bu mesaj arka plan sayfasının konsoluna kaydedilir. Görüntülemek için uzantınızın altında buna gidip chrome://extensions/tıklayabilirsiniz inspect view.

Açılır pencereyi tıklattığınızda, geçerli sayfaya yüklenir, bu nedenle console.log, geçerli sayfada günlük iletisini göstermelidir.


Ben de! En basit ve doğrudan.
SaidbakR

benim uzantım buna sahip değil, ancak diğer uzantıları var! nasıl etkinleştirebilirim
Ahmed Eid

Benim gibi 3 monitörünüz varsa ... başınızı döndürün. Monitör dizimin karşı ucunda ChromeDevTools'u açıyordu ve görmedim.
mpen

26

Yine de console.log () öğesini kullanabilirsiniz, ancak ayrı bir konsolda oturum açılır. Görüntülemek için uzantı simgesine sağ tıklayın ve "Pop-up'ı incele" yi seçin.


12

En basit çözüm, dosyanın üst kısmına aşağıdaki kodu eklemek olacaktır. Ve tüm Chrome konsol API'lerini normalde kullandığınız gibi kullanabilirsiniz.

 console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc

9
const log = chrome.extension.getBackgroundPage().console.log;
log('something')

Günlüğü aç:

  • Açık: chrome: // uzantılar /
  • Ayrıntılar> Arka plan sayfası

Komutlarınız için daha fazla açıklama yapmak ister misiniz?
inetphantom

7

Etkin sayfanın konsoluna giriş yapmak istiyorsanız bunu deneyin:

chrome.tabs.executeScript({
    code: 'console.log("addd")'
});

1
Geçerli sekme için ana bilgisayar izinleri gerektirir.
Xan

Test için ekleyebilir ve eklentiyi serbest bırakırsanız kaldırabilirsiniz.
Faz

1

Orijinal soru ile ilgili olarak, Mohamed Mansour'un bu çalışmayı başka bir şekilde yapmanın bir yolu olduğunu kabul eden cevaba eklemek istiyorum:

Diğer uzantı sayfalarına (örneğin, seçenekler sayfası, açılır sayfa) çağrı içeren arka plan sayfasından / komut dosyasından erişebilirsiniz chrome.extension.getViews(). Olarak tarif burada .

 // overwrite the console object with the right one.
var optionsPage = (  chrome.extension.getViews()  
                 &&  (chrome.extension.getViews().length > 1)  ) 
                ? chrome.extension.getViews()[1] : null;

 // safety precaution.
if (optionsPage) {
  var console = optionsPage.console;
}

1

Zaten iyi cevapları olan eski bir yazı, ama iki bitimi ekliyorum. Console.log'u kullanmak istemiyorum, konsola günlük kaydeden bir logger kullanmayı ya da istediğim her yerde kullanmayı tercih ediyorum, bu yüzden buna benzer bir günlük fonksiyonunu tanımlayan bir modülüm var

function log(...args) {
  console.log(...args);
  chrome.extension.getBackgroundPage().console.log(...args);
}

Günlüğü çağırdığımda ("bu benim günlüğüm") iletiyi hem açılan pencerede hem de arka plan konsolunda yazacaktır.

Avantajı, kodu değiştirmek zorunda kalmadan günlüklerin davranışını değiştirebilmektir (üretim için günlükleri devre dışı bırakmak gibi ...)


0

Bir arka plan sayfasından bir konsol günlüğü almak için arka plan sayfanız background.js'ye aşağıdaki kod snippet'ini yazmanız gerekir -

chrome.extension.getBackgroundPage () console.log ( 'Merhaba.');

Ardından uzantıyı yükleyin ve konsol günlüğünü görmek için arka plan sayfasını inceleyin.

Devam et!!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.