2013-05-03 48 views
-3

我對編碼和大學第一年學習Web技術感到陌生。對於我的網絡任務,我必須創建一個Web應用程序,它允許用戶設置不同的職業偏好,並顯示符合偏好的職業。在Internet Explorer中使用Javascript出現錯誤

無論如何,我已經設法做到這一點,但我在Internet Explorer中遇到問題,我的網站在Safari,Chrome和Firefox中正常工作。但是,在IE中,當你按下我的搜索按鈕時,似乎沒有JavaScript運行。我已經調試我的網站在IE瀏覽器,它想出了一個錯誤的這部分代碼:

var resetBtn = document.getElementById("resetBtn"); 
resetBtn.addEventListener("click", reset, false); 

在第二行中出現的錯誤和消息是:

Object doesn't support property or method 

做什麼,我必須要糾正錯誤?

Screenshot of error

Link to screenshot

謝謝

+0

使用IE8或更早版本?如果是這樣,你可能面臨的問題在這裏得到解答:http://stackoverflow.com/questions/6927637/addeventlistener-in-internet-explorer – talemyn 2013-05-03 17:59:28

+0

下面哪個「鏈接」? – 2013-05-03 17:59:40

+1

@Bojangles如果你右鍵點擊圖片並點擊新標籤中的打開圖片,圖片就非常清晰。我同意,他應該只專注於錯誤。 – aug 2013-05-03 18:01:13

回答

2

是啊,像之前說的,IE不知道addEventListener方法,所以,你需要這樣做:

var resetBtn = document.getElementById("resetBtn"); 
if(resetBtn.addEventListener){ 
    resetBtn.addEventListener("click", reset, false); 
}else{ 
    resetBtn.attachEvent("onclick", reset); 
} 

這樣一來,你在做正確的方法是檢查的能力瀏覽器。特別是在這種情況下,我們測試瀏覽器是否支持addEventListener(標準方法),如果不支持,則回退到IE方法,即attachEvent,並且事件名稱必須以「開」字開頭。

同樣,如上所述,你可以包括一個庫,如jquery,原型,mootools等。但我強烈建議將它保存在純JS中用於學習目的,是的,庫幫助你更快地編寫代碼,但你會跳過很多的學習,而且,純JS在任何時候都比任何圖書館都快。

希望這會有所幫助。

6

在Internet Explorer中,您需要使用attachEvent

相關問題:MSIE and addEventListener Problem in Javascript?

+0

或者使用jQuery(或其他抽象庫),因此您不必擔心跨瀏覽器的兼容性,比如它是2001. – Stoop 2013-05-03 18:19:18

+0

@Joe對於這個網絡任務,我們不允許在下一年學習時使用jQuery,所以只是想知道你們會想出什麼樣的解決方案。期待學習jQuery來解決所有這些瀏覽器兼容性問題。 – kwright2713 2013-05-03 18:31:52

+0

然後,您將不得不編寫跨瀏覽器兼容的代碼,這在@ aug的「相關問題」鏈接中進行了解釋。我在屏幕截圖中看不到您的HTML,但如果「resetBtn」是錨點或輸入元素,則可以使用元素的onclick屬性作爲原始javascript的替代方法。 Stoop 2013-05-03 18:41:29

0

看來你的IE是在兼容模式下,行爲作爲舊版本不支持addEventListener。如果您不關心IE 8及更早版本,您可以通過從服務器發出X-UA-Compatible標題強制瀏覽器退出兼容模式。您還可以設置你的HTML文件的<head>以下meta標籤(雖然發行從服務器的HTTP頭部也強烈建議):

<meta http-equiv="X-UA-Compatible" content="IE=Edge" > 

如果您需要支持舊的IE,看看attachEvent爲在aug的答案中提出。

+3

這不是兼容模式;它實際上是IE8。 – SLaks 2013-05-03 18:05:19

相關問題