Ich erstelle ein Firefox-Addon mit xul. Ich habe einen dynamischen iFrame mit dem folgenden Skript hinzugefügt:PostMessage funktioniert nicht mit dynamisch hinzugefügtem iframe in Firefox Addon mit xul
//addon script:
let chromeUrl = 'https://myserver/downloadProduct.html';
Components.utils.import('resource://gre/modules/Services.jsm');//Services
let activeWindow = Services.wm.getMostRecentWindow('navigator:browser');
let mainDocument = activeWindow.document;
let iframeEl;
iframeEl = mainDocument.createElement('iframe');
iframeEl.id = "d";
iframeEl.setAttribute('src',chromeUrl);
iframeEl.setAttribute("tooltip", "aHTMLTooltip");
iframeEl.setAttribute("autocompleteenabled", true);
iframeEl.setAttribute("autocompletepopup", "PopupAutoComplete");
iframeEl.setAttribute("disablehistory",true);
iframeEl.setAttribute('type', 'content');
iframeEl.setAttribute('height', '32px');
window.document.documentElement.insertBefore(iframeEl, window.document.documentElement.window);
window.addEventListener("message", receiveMessage,false);
Das obige Skript fügt erfolgreich einen neuen iFrame auf der Seite hinzu. Jetzt möchte ich Nachrichten von iframe zu meinem Addon erhalten. Ich habe ein Ereignis in iframe postmessage Skript, Skript wie folgt erstellt:
//iFrame Script:
<script type="text/javascript">
$(document).ready(function() {
$("#Download").click(function() {
parent.postMessage({ Action: "DOWNLOADED", Result: null }, "*");
})
$("#NotNow").click(function() {
parent.postMessage({ Action: "NOT_NOW", Result: null }, "*");
})
$("#Never").click(function() {
parent.postMessage({ Action: "DO_NOT_SHOW", Result: null }, "*");
})
});
</script>
Aber ich bin nicht in der Lage Nachricht in meinem Firefox AddOn zu erhalten.
Kann jemand helfen?
Wir müssen wissen, was 'window' in Ihrem ersten Codeblock ist (d. H. Sie haben' var window = ?? was ??; ') und' parent' in Ihrem zweiten Codeblock. – Makyen
Nur zu Ihrer Information: Es ist ziemlich unwahrscheinlich, dass Sie ein Add-On für die Verteilung auf AMO erhalten, wenn Sie eine HTML-Datei für ein Teil verwenden, die nicht mit Ihrem Add-on geliefert wird (dh eine Komponente aus einer webbasierten Quelle) Ihrer Benutzeroberfläche. – Makyen
Bitte geben Sie Ihre HTML-Datei an (oder mindestens eine, die Ihre Schaltflächen enthält), damit wir den erforderlichen Code haben, um dies zu testen (d. H. A [mcve]). – Makyen