none
ie11中使用ie8模式中js问题 RRS feed

  • 问题

  • 在IE11中使用IE8模式,js中对一个未声明变量进行赋值,会报错。

    报错信息为 “SCRIPT438: 对象不支持此属性或方法”

    我发现由于该变量名与页面某dom id相同时就会发生此问题,在其他浏览器、IE8以及IE11 edge模式并没有这错误,这是否是IE11中IE8模式的一个bug?


    2016年1月20日 7:23

全部回复

  • 在IE11中使用IE8模式,js中对一个未声明变量进行赋值,会报错。

    报错信息为 “SCRIPT438: 对象不支持此属性或方法”

    我发现由于该变量名与页面某dom id相同时就会发生此问题,在其他浏览器、IE8以及IE11 edge模式并没有这错误,这是否是IE11中IE8模式的一个bug?


    测试代码:
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=8">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
     </head>
    <body>
        <DIV id="aaa">aaaa</DIV> 
    </div>
    <script>
    aaa = 'fff';
    alert(1); // this won't be executed
    </script>
     
    </body>
    </html>


    2016年1月20日 7:46
  • 你好 zero2lin,

    文档模式的主要作用是影响浏览器显示网页HTML的方式,在接到返回的HTML文件后,决定以哪个IE版本的文档模式解析该页面(举例来说:JS脚本就是依赖文档模式,IE9js变化就需要IE9文档模式来支持)。

    由于JS脚本就是依赖文档模式,所以使用一些新的JS方法时,建议使用和他相匹配的文档模式。文档模式也是开发人员测试浏览器兼容性的一个好工具。

    Best Regards,

    Cole Wu

    2016年1月23日 3:05
    版主
  • 根据我的测试 这并不是只有 IE11 的 IE8模式出现问题, 而是所有的Ie9 之前的浏览器都有这个问题,

    而且我还发现, 在不适用 var 声明的情况下, aaa, 跟 window.aaa 并不相同,建议楼主还是不要再使用这种不严格的方式了,
    在 js 上面 添加 “use strict”  可以有效的避免这种问题

    2016年1月25日 4:15