我需要显示一个.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吗。
答案 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");