我有一個頁面addin.html
。它可以通過異步通信交叉頁面
popup = window.open("https://localhost:3000/#/posts/editor/", "popup")
彈出另一個頁面editor
(這不一定在同一個域)然後,兩頁有每個一個監聽器裏,並可以通過
// listen:
function receiveMessage(event) {
document.getElementById("display").innerHTML = JSON.stringify(event.data);
}
window.addEventListener("message", receiveMessage, false);
// send:
function sendMessage() {
popup.postMessage("data", popup.location.href);
}
將數據發送到對方
editor
由ui-router
實現。
.state('editor', {
controller: 'EditorCtrl',
resolve: { init: [ ... ] },
...
};
app.controller('EditorCtrl', ['$scope', 'init', function ($scope, init) {
...
}]
我想現在落實就是當addin.html
彈出窗口editor
,它會發送一些數據editor
,並init
需要解決這一數據,加載頁面的:首先,它加載頁面的解析init
。editor
在收到來自addin.html
的數據之前可能會掛起。
有誰知道如何修改接收器和發送器(和別的東西)來做到這一點?
難道你不能通過URL參數傳遞這個初始數據嗎? –
可能有很多數據,我怎麼把它們嵌入'window.open'? – SoftTimur
沒有太多的選擇。如果數據太大,請使用服務器端會話來存儲和檢索數據。或使用POST發送數據。 – estus