2010-01-30 45 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) { } 
    } 

再次感謝!

相關問題