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