【问题标题】:window.postMessage to script.google.com as popupwindow.postMessage 到 script.google.com 作为弹出窗口
【发布时间】:2017-02-22 04:07:36
【问题描述】:

运行时: MyPopWindow.postMessage("测试", 'mydomaine'); 我在 MyPopWindow 上出现错误 script.google.com:

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

运行时: MyPopWindow.postMessage("测试", '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)

作为 WebApp 运行的我的 Google Apps 脚本的源代码:

        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);
        });

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

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

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

    我相信 Execution API 是您的最佳选择。

    【讨论】:

    • 是的,你是对的。 “我相信 Execution API 是您最好的选择。” - 没有:P
    • 您将如何使用 Execution API 在 iframe(嵌入式网络应用程序)和主域之间进行通信?我有点迷路了?
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多