已编辑:此问题出现在所有现代浏览器中。 Firefox,Chrome和IE9中的测试都表现相同。所以我的JavaScript如下所示仅适用于较旧的IE版本。
我有一个自行开发的webhelp系统,在首次启动时会显示一个帮助页面。
每个帮助页面都有一个标题div,其中包含一个在框架集上下文中显示的链接(我知道,我知道)。
以下是生成链接的JavaScript:
<script type="text/JavaScript">
$.noConflict();
var frameurl="frameset.html?";
var filename=location.href.substring(location.href.lastIndexOf('/') + 1,location.href.length);
var truncate=location.href.substring(0, location.href.length-filename.length - 1);
var subfolder=truncate.substring(truncate.lastIndexOf('/')+1,truncate.length)+"/";
var newurl=frameurl+filename;
document.write('<a href="' + newurl + '"><span class="bannerlink">Contents and Search</span></a>');
</script>
基本上,它根据当前查看的页面构建URL。因此,生成的URL看起来像这样:
frameset.html?About_account_demographics_xaa_insight.html
然后frameset.html包含以下脚本来解释该字符串并显示正确的页面:
<script type="text/javascript">
function load() {
var test=(location.href.lastIndexOf('?'));
if (test>0) {
var page=location.href.substring(location.href.lastIndexOf('?') + 1,location.href.length);}
else {
var page="about_help.html";
}
document.getElementById("contentwin").src=page; }
</script>
这适用于IE的版本,包括IE8。当然,我可以通过启用兼容模式让它在IE9中运行。
在IE9中,contentwin
帧为空白。在所有其他浏览器中,内容根据需要显示。
编辑:这是框架集代码:
<frameset onload="load()" rows="52px,*" border=0 frameborder=0>
<frame border=0 frameborder=0 src="fis_hdr.html" name="header" scrolling="no"/>
<frameset border=0 frameborder=0 cols="210px,*">
<frameset border=0 frameborder=0 rows="50px,*">
<frame border=0 frameborder=0 scrolling="no" name="searchwin" src="sub/searchbox.html"/>
<frame marginwidth="5px" border=0 frameborder=0 name="indexwin" src="tocnav.html"/>
</frameset>
<frame border=0 frameborder=0 name="contentwin" src=""/>
</frameset>
</frameset>
答案 0 :(得分:3)
解决方案是您引用id并且没有该值的id。
document.getElementById("contentwin").src=page; } <-- you are referencing an id
<frame border=0 frameborder=0 name="contentwin" src=""/> <-- There is no id here!
在框架中添加ID!
<frame border=0 frameborder=0 name="contentwin" id="contentwin" src=""/>