IE9和旧版本之间的JavaScript行为差异

时间:2012-12-05 18:33:57

标签: javascript html internet-explorer internet-explorer-8 internet-explorer-9

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

1 个答案:

答案 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=""/>