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

我认为代码正在本地运行,从通过file://URL 加载的页面(例如,您双击或类似的)。它在 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");
于 2013-02-25T13:12:20.473 回答