0

親が子のサイズと子の場所の両方を知ることができるように、EasyXDM を使用してクロスドメイン通信を処理しています。サイジング作業を行いました。問題は、場所を親に戻したいiframe内でナビゲートするときです。

問題は、ソケットが再度作成されないページを変更すると、VM87 Core.js:324 Uncaught Error: url is undefined or empty が表示されることです。

他の誰かがこれに遭遇しますか?

親(消費者):

<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>

子 (プロデューサー) Razor レイアウト

<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>
4

1 に答える 1

0

私が見たすべてから、私が求めていることを実行する方法はありません。私が最終的に解決しようとしていた問題の唯一の解決策は、ルーティングを親のロケーション ハッシュにプッシュすることであり、ここで言及されている二重の iframe アプローチを使用することです。

コンテンツに基づいて iframe のサイズを変更する

于 2016-09-26T18:40:04.923 に答える