ie8兼容-修改jquery源码

做项目的时候遇到一个奇怪的ie8兼容问题,在谷歌或ie11都完全是正常的

参考网站 elem.ownerDocument.defaultView breaks when elem == (iframe) document

背景

  1. jquery 版本:jQuery v1.11.2
  2. 报错浏览器 ie8 运行于win7虚拟机中

报错内容

  1. 修改前的页面,在网页左下角看到报错,双击打开

  2. F12,点到 Script 重刷页面,报错内容如下

解决办法

冥思苦想了许久

  1. 打开项目的这个 jquery.mini.js(我是使用idea)
  2. CMD+F 搜索 ownerDocument.defaultView
  3. 原始代码:

  4. 加入如下代码:

    var ownerDocument = b.ownerDocument;
    if ( !ownerDocument) {
        return null;
    }
    var defaultView = ownerDocument.defaultView;
    if ( !defaultView ) {
        return null;
    }
    
  5. 修改后的代码:

  6. 修改后的界面:

思路

之前一直以为是哪里的js代码写得有问题,
其实看报错,发现这种 空 异常,检查哪里出问题,直接抛出