Я пытаюсь вставить iframe из сценария контента. Из сценария контента отправьте сообщение в iframe без особого успеха. Это самое близкое, что у меня есть. Ошибок/предупреждений в консоли нет, но это не работает (проверка предупреждений).contentscript, dynamic created iframe, postmessage
contentscript:
var iframe = document.createElement("iframe");
iframe.setAttribute("src", "https://www.com/iframe.php");
iframe.id = "iframe01";
document.getElementsByTagName("body")[0].appendChild(iframe);
//then I inject this "web_accessible_resources" script
var script = document.createElement("script");
script.type = "text/javascript";
script.src = chrome.extension.getURL("postMessage.js");
document.getElementsByTagName("head")[0].appendChild(script);
postMessage.js
window.postMessage({msg: "test"}, "*");
Я также попытался
top.postMessage({msg: "test"}, "*");
И
var iframe = document.getElementById('iframe01');
iframe.contentWindow.postMessage({msg: "test"}, "*");
EDIT: Я попытался убедиться, что iframe был загружен перед postMessage, даже если я поставил там предупреждение, он предупредил бы, что я загрузил iframe.
var iframe = document.getElementById('iframe01');
if (ifrm_prsto.contentWindow.document)
//do postMessage
EDIT2: Я получил его на работу, перемещая IFRAME от contentscript к сценарию inject.js. Я не был полностью идеален, но сейчас у меня есть работа.
iframe.php
window.addEventListener("message", function(e) {alert("test");});
Однако я смог сделать наоборот, поговорить с родительского сценария из фрейма.
Вы уверены, что фрейм загружен, когда используется 'postMessage'? Вы пытались внедрить скрипт вместо того, чтобы вызывать скрипт контента? –
Отредактировал мой op, но я сделал проверку на это, и он появляется для загрузки до отправки postMessage. Работа вокруг у меня есть, переместив код iframe на введенный скрипт и из сценария содержимого. – thefoyer