IE 8:对象不支持属性或方法“getElementsByClassName" [英] IE 8: Object doesn't support property or method 'getElementsByClassName'

查看:46
本文介绍了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 的快速修复: