.htm文件加载在IE中工作但在Firefox中不起作用

时间:2013-02-25 13:09:26

标签: jquery html

我需要显示一个.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吗。

1 个答案:

答案 0 :(得分:4)

我认为代码是通过file://网址加载的页面本地运行的(例如,您已双击或类似)。它在IE中工作但在Firefox中不起作用的原因是它们对Same Origin Policy有不同的解释,这会阻止跨源的ajax调用。 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");