İlginç bir soru aslında ..
Sadece MozillaZine en forumunda this post yoluyla bunu gerçekleştirmek için kolay bir çıkış yolu buldum. Bu teknik temel olarak web sayfasındaki özel bir DOM öğesini tanımlamak, bazı keyfi niteliklerle doldurmak ve ardından özel bir etkinliğin hedefi olarak kullanmaktan oluşur. Olay yakalanıp web sayfasından uzantıya değer aktarmak için kullanılabilir. önümüzdeki olayları kabul edeceğini belirten doc.addEventListener dördüncü parametresi vardır
function myListener(e) {
alert("data:" + e.target.getAttribute("application_state"));
}
function on_specialpage_load(event) {
if (event.originalTarget instanceof HTMLDocument &&
event.originalTarget.location.href == "http://mywebsite.net/myspecialpage.html") {
var doc=event.originalTarget;
doc.addEventListener("MyExtensionEvent", myListener, false, true);
}
}
gBrowser.addEventListener("DOMContentLoaded",on_specialpage_load,false);
Uyarı:
Web sayfası
<script type="text/javascript">
$(document).ready(function(){
$.get("http://mywebsite.net/ajax.php",function(data){
//[...]process data
//define a custom element and append it to the document
var element = document.createElement("MyExtensionDataElement");
element.setAttribute("application_state", "ready");
document.documentElement.appendChild(element);
//create a custom event and dispatch it
// using the custom element as its target
var ev = document.createEvent("Events");
ev.initEvent("MyExtensionEvent", true, false);
element.dispatchEvent(ev);
});
});
</script>
Krom kodu (jquery kullanılabilir varsayar) güvenilmeyen koddan. Ancak bu etkinlik dinleyicisini seçici olarak ekleyebilirsiniz, böylece sitenizdeki yalnızca güvenilen sayfalar değerleri uzantıya geçirebilir.
... ve gerçekten çok ilginç bir cevap. Özel etkinlik ve dinleyici tekniğiyle gerçekten çok ilgileniyorum. Bunun, sayfa javascript'in uzantıdaki bir işlevi "çağırması" için en iyi yol olacağını düşünüyor musunuz? Örneğin. siteler arası XHR'yi tıklama (kendi güvenilir uygulamanız ve alan adlarımda) uygulamak için. – Cheekysoft
Bunun en iyi * yol olup olmadığından emin değilsiniz, ancak etkili ve oldukça güvenli görünüyor. Sadece dinleyiciye bir XHR harici bir siteye istek göndermeyi denedim ve işe yaradı! –
Bu önerilen tekniktir, evet:. –
Nickolay