Bir uzantıyı Chrome'dan Firefox'a taşıyorum ve Eklenti SDK'sını kullanıyorum. Bir panelden veya açılır pencereden arka plan dosyasında bildirilen işlevlere erişmek için Chrome'da chrome.extension.getBackgroundPage
'u kullanabilirim. Firefox'ta main.js
veya başka bir dosyada bildirilen veri/işlevlere erişebilmem için bir miktar eşdeğer var mı?Bir Firefox eklentisindeki dosyalar arasında veri paylaşımı
10
A
cevap
1
Görünüşe göre Jetpack bunu desteklemiyor (vanilla Firefox eklentileriyle mümkün olsa da).
Ama size yardımcı olacak bir bölüm var, sadece bu çok düz bir şekilde değil, çünkü olayları between add-on and the content scripts aracılığıyla mesajlaşmayı içerir.
Düzenleme:
en MDN about extensions bir örneği ele alalım. XUL + JavaScript'i HTML + JavaScript olarak düşünebilirsiniz. Jetpack'in ana içerik kodunuzu sizden ayırması (sandboxes) aksine, içerik kodu (html, javascript, css panelleri, widget'lar vb.); Tek bir "kullanıcı alanı" içinde çalışır.<?xml version="1.0"?>
<overlay id="sample"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="text/javascript">
function getOS() {
return Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
}
</script>
<statusbar id="status-bar">
<statusbarpanel id="my-panel" label="OS?" onclick="alert(getOS())" />
</statusbar>
</overlay>
Ve eğer Diyelim ki gibi dahil fonksiyonu harici bir dosyada olduğunu varsayalım:
öncesinde bağlantılı sayfasında yer paylaşımını adapte ve XPCOM ile çalışan bir JavaScript kod ekleyerek elde edersiniz normal JavaScript.
Merhaba, hangi vanilla firefox özelliği bu işlevi mümkün kılar. Uzantının yapısında belirli bir işlev mi yoksa bir fark mıdır? Teşekkürler. – usertest
Jetpack olmadan eklentileri oluştururken, eklentiniz için arka plan ön planı yoktur. Herhangi bir Javascript koduna panelinizden, düğmenizden, araç çubuğundan, pencereden vb. Erişebilirsiniz. Ve herhangi bir şey dediğimde, Firebug gibi diğer eklentilerin kodlarını bile kastediyorum ... – mhitza
Jetpack versiyonunu kullanmıyorum. Jetpack olmadan mümkün olduğunu söylemiştin, nasılsın? Teşekkürler. – usertest