2010-01-30 60 views
2

我已经搜索了互联网和这个伟大的stackoverflow.com网站特别是,但不能帮助自己。我不是很有经验的程序员,我的一个朋友要求我解决仅在IE6上的错误。它适用于FF,IE7/8,Opera。 下面是代码的,让上IE6错误消息PART:对象不支持IE6中的此属性或方法JavaScript错误

(function(d, n, r) { 
    var ie, jscript, settings = {}; 
    function add(element, type, listener) { element.addEventListener(type, listener, false); }; 
    function remove(element, type, listener) { element.removeEventListener(type, listener, false); }; 
    var l = {change:[], ready:[], load:[]}; 
    a11y = function(f) { 
    a11y.change(f); 
    }; 
}) 
(self.document, self.navigator); 

该错误是在第7行:a11y.change(F);所有其他浏览器都可以,只是IE6。我不是该剧本的作者,只是试图解决这个问题。有人可以帮忙吗?函数声明必须存在一些问题或...?

+0

您收到的错误消息是什么? – 2010-01-30 18:38:57

+0

这里有很多代码似乎与该示例中的错误和缺少的一些代码无关。你能提供更多关于这段代码试图做什么的上下文吗? – 2010-01-30 19:36:23

+1

带有像'a11y'这样的变量名的任何代码都会让你感到紧张:-) – 2010-01-30 19:36:50

回答

1

这个例子看起来很困惑,那里有很多代码看起来是一个分心。

从我所看到的问题是在此代码:

a11y = function(f) { 
    a11y.change(f); 
}; 

在这里你要定义一个新的函数调用A11Y和函数的定义里面,你正在呼吁功能的方法“变” a11y被定义。我很惊讶,可以在任何浏览器中使用。

+0

感谢您的评论。我决定提供测试页的URL。这里是:http://www.apbsystems.com/awareness/sco1.html有一个JavaScript在这里:http://www.apbsystems.com/awareness/base/js/a11y/a11y.js有更多的脚本但我想这是导致问题的脚本。我得到的错误是“对象不支持此属性或方法”在IE6中。感谢您的所有努力。我不确定剧本是什么意思。我花了两天的时间试图找出答案。基本上它打开一个窗口... – PatrikAPB 2010-01-30 20:58:35

1

对我来说,它也会在IE7和IE8中引发错误。

它将错误行号码报告为第4行(IE6中的第3行,但IE6总是关闭一行)。 这表明该错误是:

function add(element, type, listener) { element.addEventListener(type, listener, false); }; 

,因为IE不落实的addEventListener这并不奇怪。在IE上的等效呼叫是:

element.attachEvent("on" + type, listener) 

它看起来像页面使用jQuery,所以你应该使用jQuery方法。
与其说

add(element, type, listener) 

,你可以调用

$(element).bind(type, listener) 

您还需要解决“删除”功能,在第5行

0

感谢你的帮助。正如Sean Hogan所建议的那样,问题在于IE没有实现addEventListener。我在互联网的某个地方发现了类似的修复程序,它对我很有帮助。

function add(element, type, listener) { 
     remove(element, type, listener); 
     element.attachEvent("on"+ type, listener); 
    }; 
    function remove(element, type, listener) { 
     element.detachEvent("on"+ type, listener); 
    }; 
    settings.jscript = jscript = @_jscript_version; 
    settings.ie = ie = parseFloat(n.userAgent.split("MSIE ")[1]); 
    if (d && d.execCommand) { 
    try { d.execCommand("BackgroundImageCache",false, true); } 
    catch (e) { } 
    } 

再次感谢!

相关问题