1
我試圖從內容腳本注入iframe。從內容腳本中,將消息發佈到iframe,沒有太多成功。這是我得到的最接近的。控制檯中沒有錯誤/警告,但它不起作用(警報測試)。contentscript,動態創建的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"}, "*");
編輯:我試圖確保在postMessage之前加載iframe,即使我在那裏發出警報,它也會提醒告訴我iframe已加載。
var iframe = document.getElementById('iframe01');
if (ifrm_prsto.contentWindow.document)
//do postMessage
EDIT2:我沒有得到它從contentscript到inject.js腳本移動iframe來工作。我想,這不是完全理想的,但我現在確實有工作。
iframe.php
window.addEventListener("message", function(e) {alert("test");});
不過,我可以做反向,跟來自iframe的父腳本。
您確定在使用'postMessage'時已經加載了框架嗎?您是否嘗試過注入腳本而不是放棄內容腳本? –
編輯我的操作,但我沒有做這個檢查,它出現在postMessage發送之前加載。我周圍的工作是通過將iframe代碼移動到注入腳本並從內容腳本中移出。 – thefoyer