Easy XDM - IFrame导航打破套接字

时间:2016-09-19 17:03:56

标签: javascript cross-domain easyxdm

我使用EasyXDM来处理跨域通信,以便父母知道孩子的大小和孩子的位置。我有尺寸工作。问题是当我在iframe内导航时,我想将位置推回到父级。

问题是当我更改页面时套接字无法再次创建时,给我 VM87 Core.js:324未捕获错误:网址未定义或为空

其他人遇到这个?

父(消费者):

<script language="javascript">
    (function () {
    // CTOR has side effect of creating globals for socket
        var socket = new easyXDM.Socket({
            remote: "@(Model.Url)" + document.location.hash,
            container: $("#pluginFrame")[0],
            onMessage: function (message, origin) {
                var messageAsObject = JSON.parse(message);

                if (messageAsObject.height) {
                    $("#pluginFrame iframe").height(messageAsObject.height);
                }

                if (messageAsObject.path) {
                    document.location.hash = messageAsObject.path;
                }
            },
            onReady: function() {
                console.log("Shell Socket Ready");
                $("#pluginFrame iframe").width("100%");
            }
        });
    })();
</script>

儿童(制片人)剃刀布局

<script language="javascript">
    (function () {
        debugger;
        var socket = new easyXDM.Socket({
            onReady: function () {
                console.log("eBox Ready");

                socket.postMessage(JSON.stringify({
                    height: $(".body-content").outerHeight(),
                    path: document.location.pathname
                }));
            }
        });

        $("body-content")
            .on("change",
                function () {
                    socket.postMessage(JSON.stringify({
                        height: $(".body-content").outerHeight()
                    }));
                });

        $(document.location.pathname)
            .on("change",
                function () {
                    socket.postMessage(JSON.stringify({
                        path: document.location.pathname
                    }));
                });

        socket.postMessage(JSON.stringify({
            path: document.location.pathname
        }));
    })();
</script>

1 个答案:

答案 0 :(得分:0)

从我所见过的所有事情中,没有办法做我以后的事情。似乎我最终试图解决的问题的唯一解决方案是将路由推送到父级的位置哈希,就是使用这里提到的双iframe方法。

Resizing an iframe based on content