2012-06-21 51 views
0
doc = $(document), 
win = $(window); 

doc.on("click",function(){ 
    alert("test") //working in all browser 
}) 

//but.. 

win.on("click",function(){ 
    alert("test") //not working in ie7 ie8 
}) 

我想知道爲什麼document在所有瀏覽器中都能正常工作,但$(window)在IE7或IE8中都不起作用。

回答

1

$(window)$(document)是jQuery包裝完全不同的對象。功能上的差異僅僅是由於Internet Explorer中的兼容性問題; window上的某些事件處理程序不起作用,因此您將它們放在document上。

+0

在這裏,我在想jQuery抽象出瀏覽器差異... – RobG

+0

@RobG:呃,我想這只是他們希望你用jQuery來做的方式。 'document',而不是'window'。 (儘管我更喜歡'window',實際上。) – Ryan

0

該窗口與實際的程序窗口有關,因爲文檔與加載頁面的html頁面和內容區域有關。

+0

第二段是無構造的,並且忽略了事件模型和DOM對象在一般情況下是如何演變和實踐的。 – RobG

+0

好的評論已刪除,但仍然有效,IE不應再被支持/開發。有多個向微軟提出的請求將其作爲瀏覽器刪除,並強制添加到Windows,因爲這是一個巨大的安全隱患。 – gabeio

+0

我不是IE瀏覽器的粉絲,但IE 8及更低版本仍然佔據了網頁用戶的10%以上,其中包括許多大型企業,所以從一般的Web開發角度來看,您需要持續支持它一段時間。 – RobG

1

只是評論...

早在瀏覽器大戰天,微軟和Netscape開發非常不同的事件模型爲他們的瀏覽器。 W3C在某種程度上對這些標準進行了標準化,但標準是兩者之間的妥協,許多事情仍然是雙方都擁有的。當網景公司去世時,Mozilla.org從它的骨灰中崛起並催生了一大堆瀏覽器(Mozilla,Firefox,Camino等)。 Mozilla非常好地實施了W3C標準,因此Web開發人員在必要時支持W3C標準和IE專有內容。神經網絡專有的方法很快就被放棄了,所以Netscape Navigator(NN)用戶的這個迅速縮小的頻段處於高位並且處於乾燥狀態,必須得到一個新的瀏覽器。另一方面,IE擁有大約95%的用戶份額,因此微軟決定保留其大部分專有行爲,同時支持其認爲必要的標準。順便說一下,爲了生存,Opera在這段時間非常類似於IE,而Mozilla實現了很多IE瀏覽器的東西,因爲它與標準(以及其他一些原因)沒有衝突。

因此,雖然大多數專有NN的東西都消失了,IE的東西仍然懸而未決,直到MS認爲他們可以轉儲它。即使在最新的版本中,仍然存在舊IE專有的東西殘留,但其中一些仍然存在。

爲了達到我們今天的地位,我們需要每個人都致力於標準。請注意,當IE 6發佈時,它很容易成爲最符合標準的瀏覽器(但是它的桂冠太長,壟斷力量不足)。

也許MS有這個權利,在文檔上設置的點擊事件不應該冒泡到窗口。但顯然這並不是大多數寫標準的人都這樣認爲的,所以他們以不同的方式寫它(注意MS爲web標準組織提供了幫助,所以它有機會發表意見)。

在任何情況下,從版本9看來IE似乎和別人一樣。據我所知,這種行爲直到HTML5(§ 6.1.6.4 Events and the Window object)才被標準化,但很高興被證明是錯誤的。

相關問題