blog icon indicating copy to clipboard operation
blog copied to clipboard

IE下诡异的白屏

Open axetroy opened this issue 7 years ago • 0 comments

从以前旧博客迁移至此 2015-12-27 19:23:16

现象:

IE9以及以下 打开页面空白,不显示任何内容。 但是只要打开控制台,就能够正常打开页面

原因:

在IE9以及以下,只有打开控制台,IE才会实例化console对象。

所以调用console对象的方法,又没有打开控制台,那么就会抛出错误。

解决办法:

给console对象打上polyfill

或手动加上条件注释

    <!--[if lte IE 9]>
    <script>
      // Avoid `console` errors in browsers that lack a console.only fo damn it IE,which is bullshit,holy shit!
      (function() {
        var method;
        var noop = function () {};
        var methods = [
          'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
          'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
          'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
          'timeStamp', 'trace', 'warn'
        ];
        var length = methods.length;
        var console = (window.console = window.console || {});
        while (length--) {
          method = methods[length];
          // Only stub undefined methods.
          if (!console[method]) {
            console[method] = noop;
          }
        }
      }());
    </script>
    <![endif]-->

原理:

如果不存在console对象那么就自己初始化一个console对象,并且挂载了一堆方法,都执行一个叫noop的空函数,不至于报错。

axetroy avatar Apr 13 '17 08:04 axetroy