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 では動作しない理由を知りたいです。

4

3 に答える 3

1

コメントだけ…</p>

ブラウザ戦争の時代に、MicrosoftとNetscapeは、ブラウザ用に非常に異なるイベントモデルを開発しました。W3Cはこれらをある程度標準化しましたが、標準化は2つの間の妥協案であり、多くのものが双方で独自のものでした。

Netscapeが死んだとき、Mozilla.orgはその灰から立ち上がって、たくさんのブラウザ(Mozilla、Firefox、Caminoなど)を生み出しました。MozillaはW3C標準をかなりうまく実装したので、Web開発者は必要に応じてW3C標準とIE独自のものをサポートしました。NN独自の方法はすぐに廃止されたため、Netscape Navigator(NN)ユーザーの急速に減少しているバンドは高く、乾燥したままであり、新しいブラウザーを入手する必要がありました。

一方、IEはユーザーシェアの約95%を占めていたため、Microsoftは、必要と思われる標準をサポートしながら、独自の動作の多くを維持することを決定しました。ちなみに、Operaは生き残るためにこの頃は非常にIEに似ていて、Mozillaは同じ理由で標準と競合しない(そして競合するものもある)多くのIEのものを実装しました。

そのため、プロプライエタリなNNのもののほとんどが消えた一方で、MSがそれをダンプできると判断するまで、IEのものはぶらぶらしていました。最新バージョンでも、古いIE独自のものが残っていますが、その一部は残っています。

私たちが今日いる場所にたどり着くには、標準に向けたすべての人の関心のある努力が必要でした。IE 6がリリースされたとき、それは簡単に最も標準に準拠したブラウザーであったことに注意してください(ただし、独占力の欠点である、あまりにも長い間その栄光に支えられていました)。

おそらくMSはこれを正しく持っていたので、ドキュメントに設定されたクリックイベントがウィンドウに表示されないようにする必要があります。しかし、明らかにそれは標準を書く人の大多数が考えていたものではなかったので、彼らはそれを異なって書いた(MSはWeb標準機関に貢献しているので、発言する機会があったことに注意してください)。

いずれにせよ、バージョン9以降、IEは他のIEと同じように動作するようです。私の知る限り、この動作はHTML5(§6.1.6.4イベントとWindowオブジェクト)まで標準化されていませんでしたが、それについて間違っていることが証明されてうれしいです。

于 2012-06-21T02:49:47.447 に答える
1

$(window)とは、まったく異なるオブジェクトの$(document)jQuery ラッパーです。機能の違いは、単に Internet Explorer の互換性の問題によるものです。一部のイベント ハンドラーは機能しないため、代わりにそれらを配置します。windowdocument

于 2012-06-21T01:53:20.467 に答える
0

ウィンドウは実際のプログラム ウィンドウと関係があり、ドキュメントは読み込まれるページの html ページとコンテンツ領域と関係があります。

于 2012-06-21T01:54:25.987 に答える