1

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

1 回答 1

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=""/> 
于 2012-12-06T22:13:23.373 回答