Я создаю аддон firefox с помощью xul. Я добавил динамический IFRAME, используя следующий скрипт:postMessage не работает с динамически добавленным iframe в Firefox-аддоне с помощью 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);
Выше сценарий успешно добавление нового IFRAME на странице. Теперь я хочу получать сообщения из iframe в свой аддон. Я создал событие PostMessage в IFrame сценария, сценарий следующим образом:
//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>
Но я не могу получить сообщение в моем FireFox аддон.
Может ли кто-нибудь помочь?
Нам нужно знать, что именно «окно» находится в вашем первом блоке кода (т. Е. Вы сделали «var window = ?? what ??;') и «parent» в своем втором блоке кода. – Makyen
Просто FYI: Маловероятно, что вы получите надстройку, одобренную для распространения на AMO, если вы используете HTML-файл, который не поставляется с вашим надстройкой (то есть с веб-источником) для части вашего пользовательского интерфейса. – Makyen
Просьба представить ваш HTML-файл (или, по крайней мере, один из них с вашими кнопками), поэтому у нас есть код, необходимый для проверки этого (т. Е. [Mcve]). – Makyen