已编辑:此问题出现在所有现代浏览器中。在 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>