资讯专栏INFORMATION COLUMN

IE9不能直接引用Console

CNZPH / 3346人阅读

摘要:问题公司有个项目,功能很简单,读取业务数据,展示在页面上。结论不能直接引用,一旦语句中出现引用,后面的代码就不再执行了,就像个黑洞,把光都吸走了,无影无踪。

问题:

公司有个项目,功能很简单,读取业务数据,展示在页面上。

一个很简单的问题,却因为目标浏览器是IE9,卡了三天。

前端给的反馈是:

在IE9下,程序一会儿对,一会儿不对……第一次刷不出来,多刷几次就刷出来了。

这些话,听着就觉得怪,如果听之任之,就成了不明就里一笔糊涂账。

于是,我开始跟他们一起调试,就在大家快要放弃的时候,我发现,这个“一会儿对,一会儿不对”跟console对象的引用有关,只要把引用了console对象的语句注释掉,脚本的运行结果就总是正确,反之,就“一会儿对,一会儿不对”。

BUG找到了,但我还是觉得这个console得彻底搞清楚,不然还得至少踩两三年的坑。

Does IE9 support console.log, and is it a real function?

In Internet Explorer 9 (and 8), the console object is only exposed when the developer tools are opened for a particular tab. If you hide the developer tools window for that tab, the console object remains exposed for each page you navigate to. If you open a new tab, you must also open the developer tools for that tab in order for the console object to be exposed.

真不知道这家伙从哪学会的秘籍,这么诡异的现象,即便自己发现了,也不敢这样总结。

结论:

IE9不能直接引用console,一旦语句中出现console引用,后面的代码就不再执行了,console就像个黑洞,把光都吸走了,无影无踪。

一旦你想要借助Development Tools去调试一下,看看是不是console引用出了问题,IE9就会马上创建一个console对象,然后这个BUG就不见了!这时候你关掉Development Tools,console依然还在……下次你再打开新页面,console又成了黑洞。

如果没有旁人的帮助,不大可能从这个坑里爬出来的,我们只能告诉客户,程序在IE9中运行的结果是“一会对,一会儿不对,好像是随机的……”。

解决方法:

window.console复制给console

console = window.console || {};

然后再给这个空的console对象,添加一些空的方法,让它们在IE9以及其他不支持console的浏览器上不要抛异常,好让我们的程序顺利执行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100100.html

相关文章

  • 整理DOM事件相关知识点

    摘要:事件相关内容当用户与浏览器发生的一些交互时如果希望去获得用户行为就需要借助事件来完成事件部分内容在中重要性不言而喻罗列需要了解与事件相关的知识如下这也是面试中遇到的问题事件的级别事件模型事件流事件处理程序描述事件捕获冒泡的具体流程对象常见的 DOM事件相关内容 当用户与浏览器发生的一些交互时, 如果希望去获得用户行为, 就需要借助事件来完成. 事件部分内容在 JS中重要性不言而喻. ...

    shenhualong 评论0 收藏0
  • 整理DOM事件相关知识点

    摘要:事件相关内容当用户与浏览器发生的一些交互时如果希望去获得用户行为就需要借助事件来完成事件部分内容在中重要性不言而喻罗列需要了解与事件相关的知识如下这也是面试中遇到的问题事件的级别事件模型事件流事件处理程序描述事件捕获冒泡的具体流程对象常见的 DOM事件相关内容 当用户与浏览器发生的一些交互时, 如果希望去获得用户行为, 就需要借助事件来完成. 事件部分内容在 JS中重要性不言而喻. ...

    red_bricks 评论0 收藏0
  • [学习笔记] 事件(上篇)

    摘要:指定事件处理程序指定事件处理程序主要有两种方式级事件处理程序级事件处理程序。添加事件处理程序注意这里是哦或移除事件处理程序使用移除事件处理程序的条件与方法相同必须提供相同的参数,从而添加的匿名函数也无法被移除。 今天看书又看到事件,遂决定小总结一下~ JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用监听器(事件处...

    wangym 评论0 收藏0
  • [学习笔记] 事件(上篇)

    摘要:指定事件处理程序指定事件处理程序主要有两种方式级事件处理程序级事件处理程序。添加事件处理程序注意这里是哦或移除事件处理程序使用移除事件处理程序的条件与方法相同必须提供相同的参数,从而添加的匿名函数也无法被移除。 今天看书又看到事件,遂决定小总结一下~ JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用监听器(事件处...

    RayKr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<