通过receiveMessage恢复等待异步脚本

时间:2015-09-21 13:22:16

标签: javascript angularjs iframe asynchronous protractor

Client1在窗口中有一个iframe。 Client2通过异步脚本将postMessage()发送到Client1,然后Client1执行某些操作(绕过跨域策略限制)。到目前为止它完美无缺。 现在Client1将postMessage()返回给Client2,以便他(2)可以结束他的等待(因为async.script执行)。

如何完成。

代码段:

客户2

var iframe;
    return browser.executeAsyncScript(function (done) {
        window.addEventListener("message", receiveMessage);
        iframe = document.getElementById("myIframe");
        iframe.contentWindow.postMessage("message", "*");
        ##### HERE COMES HOW TO END WAITING #####
    }).then(function () {

    });

客户1

script.function setup() {
            window.addEventListener("message", receiveMessage);
        }

script.function receiveMessage(event) {
            if (event.data !== "message")
                return;
            // done something
            event.source.postMessage("message", event.origin); ?????
            // sth. like this
        }

非常感谢任何提示

1 个答案:

答案 0 :(得分:1)

不确定Client2中的receiveMessage是什么,但由于addEventListener将执行匹配的所有处理程序,我只是添加另一个事件,如果receiveMessage与{{1}中的那个不同并且Client1可供receiveMessage`访问,那么您就不需要我刚刚创建的新事件处理程序。

done