IE9不能直接援用Console

题目:

公司有个项目,功用很简单,读取营业数据,展现在页面上。

一个很简单的题目,却由于目的浏览器是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的浏览器上不要抛非常,好让我们的顺序顺遂实行。

    原文作者:IMDZ
    原文地址: https://segmentfault.com/a/1190000017394843
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞