5

Webページを離れることに関する警告メッセージを表示しようとしていますが、フレームセット内にネストされています。

どうやらwindow.onbeforeunloadは、ブラウザにルートページとしてWebページをロードした場合にトリガーされますが、フレームセット内にロードされた場合はトリガーされません。

編集:Chrome7またはSafari5では機能しませんが、InternetExplorer8およびFireFox3.6では機能します。Chrome7やSafari5でも動作させるための修正/回避策はありますか?

私は何が間違っているのですか?

これは私が試したものです:

function closePageWarning()
{
    return "Are you sure you want to leave this page?"
}

window.onbeforeunload = closePageWarning

テストドキュメント:

test1.html(unbeforeunloadスクリプトのあるページ)

<html>
    <body>
        <script language="javascript">
        function closePageWarning()
        {
            return "Are you sure you want to leave this page?";
        }

        window.onbeforeunload = closePageWarning;
        </script>
        <a href="http://www.bitbucket.org">bitbucket</a>
    </body>
</html>

test2.html(フレームセット)

<html>
    <frameset cols="20%, 80%">
        <frame name="menu" src="test3.html" />
        <frame name="content" src="test1.html" />
    </frameset>
</html>

test3.html(メニュー、スクリプトによるフレームの変更のトリガー)

<html>
    <body>
        <a target="content" href="http://www.bitbucket.org">bitbucket</a>
    </body>
</html>

テスト方法:

  • ブラウザにtest1.htmlをロードし、リンクをクリックすると、質問が表示されます。
  • ブラウザにtest2.htmlをロードし、いずれかのリンクをクリックしてください。質問がないことに注意してください。

テスト済み:

  • GoogleChrome7.0.517.44-動作しません
  • InternetExplorer8.0.7600.16385-動作します
  • Safari5.0.2-動作しません
  • FireFox3.6.12-動作します
4

1 に答える 1

1

フレームのコンテキストでwindowは、一種のウィンドウであるフレームを指します。したがってwindow.onbeforeunload、ルート ページがアンロードされたときに発生しない、フレーム内のウィンドウのイベントを参照します。でルート ウィンドウを参照しwindow.topたり、 でフレームの直接の親ウィンドウを参照したりできますwindow.parent。ただし、これらは標準のプロパティではないため、自己責任で使用してください。

于 2010-11-08T15:29:24.297 に答える