ownerDocument.defaultView为null ie8 bootstrap

时间:2014-04-12 05:16:13

标签: javascript jquery twitter-bootstrap internet-explorer-8

我在我的项目中使用了几个bootstrap组件,两个组件" accordion"和"莫代尔"但是,根本不在IE8中工作。根据bootstrap的文档,它支持IE8,我假设手风琴和模态也应该有效。

  • Bootstrap版本 - 3.1.0
  • jQuery版本 - 1.11.0

手风琴码 -

     <div class='accordion-container'>
         <div class='panel-group' id='accordion'>
            <div class="panel panel-default">
               <div id="panal_9" data-toggle="collapse" data-parent="#accordion" href="#collapse0" class="panel-heading" style="">
                   <h4 class="panel-title">Class 9</h4>
               </div>
               <div id="collapse0" class="panel-collapse collapse">
                   <div class="panel-body">
                       <div class="list-group">
                           <ul class="list-unstyled">
                              <li data-class="1" data-subject="2">English</li> 
                              <li data-class="1" data-subject="1">Math</li>
                              <li data-class="1" data-subject="6">Social Science</li>
                           </ul> 
                       </div>
                   </div>
               </div>
            </div>
        </div>
    </div>

问题 -

单击手风琴标题会在IE8上引发错误 - 'ownerDocument.defaultView' is null or not an object

1 个答案:

答案 0 :(得分:0)

我意识到这个问题有点老了,所以我希望这不是一个问题,但如果其他人偶然发现这个问题,我想我会发布我的解决方案。

您是否偶然使用http://imsky.co中的持有人?

Holder定义window.getComputedStyle(如果它不存在)。它在IE8中没有。

jQuery检查window.getComputedStyle是否存在。如果它存在jQuery跳入IE8不安全的代码。如果window.getComputedStyle不存在,一切正常。

我的修复是编辑holder.js。

这一行:

(window.getComputedStyle = function (e) { return this.el = e, this.getPropertyValue = function (t) { var n = /(\-([a-z]){1})/g; return t == "float" && (t = "styleFloat"), n.test(t) && (t = t.replace(n, function () { return arguments[2].toUpperCase() })), e.currentStyle[t] ? e.currentStyle[t] : null }, this })

是问题。

我将getComputedStyle检查更改为:

if (window.getComputedStyle) {
    window.getComputedStyleHolder = window.getComputedStyle;
} else {
    (window.getComputedStyleHolder = function (e) { return this.el = e, this.getPropertyValue = function (t) { var n = /(\-([a-z]){1})/g; return t == "float" && (t = "styleFloat"), n.test(t) && (t = t.replace(n, function () { return arguments[2].toUpperCase() })), e.currentStyle[t] ? e.currentStyle[t] : null }, this })
}

然后我将holder.js中window.getComputedStyle的所有其他引用更新为window.getComputedStyleHolder