Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE9和旧版本之间的JavaScript行为差异_Javascript_Html_Internet Explorer_Internet Explorer 8_Internet Explorer 9 - Fatal编程技术网

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

IE9和旧版本之间的JavaScript行为差异,javascript,html,internet-explorer,internet-explorer-8,internet-explorer-9,Javascript,Html,Internet Explorer,Internet Explorer 8,Internet Explorer 9,已编辑:此问题出现在所有现代浏览器中。在Firefox、Chrome和IE9中的测试都表现相同。因此,我的JavaScript(如下所示)只适用于较旧的IE版本 我有一个自制的webhelp系统,它在第一次启动时只显示一个帮助页面 每个帮助页面都有一个header div,其中包含一个链接,可以在框架集的上下文中显示自己(我知道,我知道) 以下是生成链接的JavaScript: <script type="text/JavaScript"> $.noConflict();

已编辑:此问题出现在所有现代浏览器中。在Firefox、Chrome和IE9中的测试都表现相同。因此,我的JavaScript(如下所示)只适用于较旧的IE版本

我有一个自制的webhelp系统,它在第一次启动时只显示一个帮助页面

每个帮助页面都有一个header 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>
然后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>

解决方案是,您正在引用一个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!

document.getElementById(“contentwin”).src=page;}是的,IE的不同版本之间的URL没有区别。不过,这缩小了它的范围,不是吗。如果URL仍在html文件中正确构造,则问题一定在于解释框架集中构造的URL的脚本。调试表明IE9中未像以前的浏览器那样设置变量
page
的值。SCRIPT5007:无法设置属性“src”的值:对象为null或未定义的frameset.html?关于\u account\u demographics\u xaa\u insight.html,第22行字符2 iframe标记看起来像什么?它是framset,不是iframe。用代码更新问题。将
添加到框架集文档的
可以解决IE的问题。不过,我仍然想了解javascript的问题是什么。这绝对是正确的解决方案。非常感谢你。现在,所有浏览器中的一切行为都与预期完全一致。因此,显然,在旧版本的IE中,这起作用的原因是,当@id不存在时,它使用了
@name
属性作为回退,这也解释了为什么页面呈现速度比我希望的要慢。非常感谢你的帮助!IE9也改掉了这个坏习惯
 <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> 
document.getElementById("contentwin").src=page; }  <-- you are referencing an id
<frame border=0 frameborder=0 name="contentwin" src=""/>  <-- There is no id here!
<frame border=0 frameborder=0 name="contentwin" id="contentwin" src=""/>