window.postMessage以script.google.com格式弹出

时间:2016-10-13 06:50:00

标签: javascript google-apps-script

运行时: MyPopWindow.postMessage(“测试”,“ mydomaine ”); 我在MyPopWindow上有一个错误:script.google.com:

  

(程序):1无法在'DOMWindow'上执行'postMessage':目标   提供的来源(' mydomaine ')与   收件人窗口的来源('https://script.google.com')。

运行时: MyPopWindow.postMessage(“Test”,“https://script.google.com”); 我在MyPopWindow上有错误:

  

删除postMessage ..来自主机 mydomaine ,但是预期主机   https:// ****** - script.googleusercontent.com

mydomaine 页面中的来源:

  window.addEventListener("DOMContentLoaded", function() {
    window.addEventListener("message", function(e) {
        // wait for child to signal that it's loaded.
        if ( e.data === "loaded" && e.origin === iframe.src.split("/").splice(0, 3).join("/")) {
            // send the child a message.
            alert(e.data);
        }
    })
}, false)

源自我的Google Apps脚本运行为WebApp:

        document.addEventListener('DOMContentLoaded', function () {
            // signal the parent that we're loaded.
            window.parent.postMessage("loaded", "*");
            
            // listen for messages from the parent.
            window.addEventListener("message", function(e) {
            if(event.origin !== 'mydomain') return;
                  var message = e.data;
                  alert(message);
            }, false);
        });

1 个答案:

答案 0 :(得分:0)

此错误消息来自App脚本之一Javascript driver files。 这是Google添加的额外安全措施,以防止人们使用postMessage系统。

Google似乎想强迫您使用其中一种接受的协议进行Windows /域之间的通信,即Execution API。 我尝试过其他方法,例如传递URL参数,但到目前为止没有一种方法可行,因为我无法从iframe中访问所有应用程序脚本。

我相信执行API是你最好的选择。