2

アプリケーションの外部にある .htm ファイルを表示する必要があります。

これがデザインとコードです。

<a href="javascript:;" onclick="showhtm()">

<div id="htmldiv">

</div>

<script type="text/javascript">

function showhtm() {
    var sPath = window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    var shtm = sPage.substring(0, sPage.lastIndexOf('.'));

    $("#htmldiv").load("http://10.196.128.98/htms/app/files/html/" + shtm + ".htm");

}
</script>

これは IE では機能しますが、Firefox では機能しません。

代わりに iframe を使用する必要があります。

4

1 に答える 1

4

URLを介して読み込まれたページから、コードがローカルfile://で実行されていると思います (たとえば、ダブルクリックしたなど)。IE では機能するが Firefox では機能しない理由は、クロスオリジンの ajax 呼び出しを防止するSame Origin Policyの解釈が異なるためです。IE では、オリジンnull(ローカル ファイル) が ajax を介して Web からリソースを読み込むことができます。技術的にはクロスオリジン呼び出しですが、Firefox はそうではありません。

代わりに iframe を使用する必要があります。

はい、iframeうまくいきます。もちろん、コンテナ ページからそのコンテンツのスクリプトを作成することはできません (SOP が原因で)。また、ロードするページはフレーム バスティング スクリプトを使用する必要はありませんが、これらの条件を考えると、動作するはずです。 . もちろん、srcを使用するのではなく、それを設定します。load

$("#htmliframe")[0].src = "http://10.196.128.98/htms/app/files/html/" + shtm + ".htm";
// or
$("#htmliframe").attr("src", "http://10.196.128.98/htms/app/files/html/" + shtm + ".htm");
于 2013-02-25T13:12:20.473 に答える