IE 8:对象不支持属性或方法“getElementsByClassName" [英] IE 8: Object doesn't support property or method 'getElementsByClassName'
本文介绍了IE 8:对象不支持属性或方法“getElementsByClassName"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 diapo 滑块,它似乎适用于除 Internet Explorer 8 之外的所有其他浏览器.
在调试模式下运行 ie8 后,我收到以下错误:
<块引用>SCRIPT438:对象不支持属性或方法'getElementsByClassName'prototype.js, line 5988 character 5
返回函数(className, parentElement) {返回 $(parentElement || document.body).getElementsByClassName(className);};
<块引用>
SCRIPT438:对象不支持属性或方法fireEvent"prototype.js,第 5736 行字符 7
if (document.createEvent)element.dispatchEvent(事件);别的element.fireEvent(event.eventType, event);返回 Event.extend(event);
我在 magento 平台上运行这个滑块,似乎原型脚本中有问题.它使用的原型版本是 1.7,因此排除了脚本更新的可能修复.
注意:虽然我在 ie9 中没有显示问题,但我收到以下错误:
<块引用>SCRIPT438:对象不支持属性或方法dispatchEvent"prototype.js,第 5734 行字符 7
if (document.createEvent)element.dispatchEvent(事件);别的element.fireEvent(event.eventType, event);返回 Event.extend(event);
这些是 diapo 滑块工作所需的脚本,在标题中加载了脚本标签.我不确定,但其中一些脚本可能与现有脚本冲突:
<script type='text/javascript' src='http://www.pixedelic.com/plugins/diapo/scripts/jquery.min.js'></script><script type='text/javascript' src='http://www.pixedelic.com/plugins/diapo/jquery.mobile-1.0rc2.customized.min.js'></script><script type='text/javascript' src='http://www.pixedelic.com/plugins/diapo/jquery.easing.1.3.js'></script><script type='text/javascript' src='http://www.pixedelic.com/plugins/diapo/jquery.hoverIntent.minified.js'></script><script type='text/javascript' src='http://www.pixedelic.com/plugins/diapo/scripts/diapo.js'></script>
解决方案
IE8 确实不支持getElementsByClassName
.但是,它确实支持querySelectorAll
.所以,我建议使用 querySelectorAll
编写一个 polyfill.
document.getElementsByClassName('foo')
变成
document.querySelectorAll('.foo');//前缀点.
请注意,Prototype.js 不赞成使用 getElementsByClassName
而赞成使用$$
和 Element#select
.
IE8 的快速修复: