0

このようなサイト:

    `--main.html
    `--dialog.html
    `--folder
        `--iframe.html

コードは次のとおりです:
main.html:

    <html>
    <head>
    <script type="text/javascript">
        function testframe() {
            var doc = document.getElementById("frame").contentWindow;
            doc.show();
        }
    </script>
    </head>
    <body>
        <iframe src="folder/iframe.html" id="frame"></iframe>
        <br/>
        <button onclick="testframe()">test</button>
    </body>
    </html>

dialog.html:

    <html>
    <head>
    </head>
    <body>
    This is modal dialog!
    </body>
    </html>

iframe.html:

    <html>
    <head>
    <script type="text/javascript">
        function show() {
            showModalDialog('../dialog.html');
        }
    </script>
    </head>
    <body>
        this is ifram
        <br />
        <button onclick="show()">show dialog</button>
    </body>
    </html>

iframe で [ダイアログの表示] ボタンをクリックすると、モーダル ダイアログが正しく表示されます。
iframe の外側でテスト ボタンをクリックすると、モーダル ダイアログが正しく表示されません。

iframe の外側のテスト ボタンをクリックして dilog に正しいページを表示するときに、これを修正するにはどうすればよいですか?

4

1 に答える 1

0
iframeDomElement.contentWindow.setTimeout(function() {
   iframeDomElement.contentWindow.childFunc();
}, 0);

このハックは、子ウィンドウに対する相対パスを作成します。firefox と chrome で動作しますが、safari では動作しません。

于 2012-06-05T23:58:56.573 に答える