2

Arka plan komut dosyasından background.js yeni bir sekme açmaya çalışıyorum ve bu yeni sekme arka plan komut dosyasında aldığım bazı metinleri göstermeye çalışıyorum. Sadece boş bir HTML şablonu olan template.html dosyasını kullanarak yeni bir sekme oluşturmak için chrome.tabs.create({ url: "template.html" }); kullanıyorum:Chrome uzantısı: Yeni oluşturulan bir krom sekmesine HTML nasıl eklenir?

background.js, ben yeni sekme sayfasına eklemek metni içeren text adlı bir değişken var
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Testing</title> 
    </head> 
    <body> 
    </body> 
</html> 

, ama nasıl ekleyeceğimi bilmiyorum.

Ben metni ekleme yeni sekme sayfasında bir komut dosyası yürütme üzerinde ben chrome.tabs.executeScript(tab.id, {file: 'template.js'}); kullanarak template.html benim komut template.js çalıştırmayı denediğinizde bunu ancak işe yarayabilecek düşündüm aşağıdaki hatayı alıyorum:

Unchecked runtime.lastError while running tabs.executeScript: Cannot access contents of url "chrome-extension://*/template.html". Extension manifest must request permission to access this host. 

Yeni sekme, uzantıya erişilemeyen chrome-extensions://*/template.html URL'sine sahip olduğundan.

Sekme sayfasına başka nasıl metin veya HTML ekleyeceğinden emin değilim. Bu konuda herhangi bir yardım takdir. Teşekkür ederim.

+1

Bu hata size manifest.json adresinde doğru izin ayarlarına sahip olmadığını bildirir mi? Bunu kontrol ettiniz mi? –

+0

Evet, manifest.json'da '*: // */*' ve '' 'izinlerine 'ekledim, ancak yine de aynı hatayı veriyor. – Nick

+1

Başta "sekmeler" var mı? Https://developer.chrome.com/extensions/content_scripts –

cevap

3

sayfasını bir chrome-extension: sayfasında kullanamazsınız. Tek geçerli şemalar httphttpsfileftp'dur.

Her neyse, gerek yok. Çalıştırmak istediğiniz dosyayı bir komut dosyası etiketiyle html'ye kolayca ekleyebilirsiniz. Sadece template.html aşağıdakileri ekleyin:

<script src="template.js"></script> 

Not mesela bu sayfaya ve arka plan sayfası arasında iletişim kurmak için mesajlaşmayı kullanabilir, böylece bu gibi uzantı sayfalarında, tam chrome.* API'ler erişimi olduğundan.

+1

Teşekkür ederim, "template.js" ifadesini, betiğin çalışmasını sağlamak için belirttiğiniz gibi, "template.html" biçimine doğrudan ekleyebildim. Daha sonra bu metni "template.js" 'den "template.html"' ye bir chrome API iletisiyle "background.js" den göndererek enjekte edebildim. – Nick