2011-10-27 7 views

答えて

7

答えはここにある:Decoding jQuery

ジム・ドリスコルは、より標準尊重のブラウザで、 あなたはeval.call(ウィンドウ、データ)を使用することができることが分かったが、ChromeとIEのために、物事 少し違います。

のInternet Explorer:eval.call(ウィンドウ、データ)クロームの休憩が、ウィンドウ[ "evalの" ]は.call(ウィンドウ、データ:IEがwindow.execScript(データ)

Chromeを使用しているようです)はChrome上で動作し、他の非IEブラウザ と同様に、これは上記の回避策に基づいています。

+1

ええ、 'eval.call'は少なくともChrome 14ではうまく動作します。 –

+1

私は説明を見つけた理由を書いていませんでした.... Chrome 14は古いバージョンよりも標準に近いですし、jqueryはクロスブラウザであることを目指しているだけでなく、現在のブラウザではないので、 – scrappedcola

+0

ええ、それも私が思ったことです。私はちょうどそれがクロム14で動作していることに気づいていた。jQueryは、それが動作しないブラウザが周りにある限り(それは永遠になるだろう!) –

3

sourceを調べたところ、this linkが見つかりました。クロームのeval.call(window,src)休憩、

悲しいこと

- それは一致しないことについて コンテキストを文句:強調したテキストを見てみましょう。奇妙な - 私はなぜこの がそうかもしれないGoogleをできなかった。しかし、後で幸運にもいくつかの推測があり、私は window.eval.call(window、src)がIE以外のすべてのブラウザで動作することを発見しました。今、私は "var j = 1"と言うと、ウィンドウ[j]は設定されている変数です...だから、 それは良いです。なぜ追加のウィンドウを追加する必要があるのですか? Chromeで? は確かではありませんが、私は推測できますが、間違っている可能性が高いです。

したがって、window.evalは、ChromeでglobalEvalの作業を行うために使用されます。

+0

クロム14でうまくいくようだその記事は2009年のものなので、今修正されたChromeのバグであれば驚くことはありません。 –

+0

@JamesAllardice Chromeの最新バージョンを使用していないユーザーはいます。 jQueryは、できるだけ多くのブラウザをサポートするように設計されています。 –

+0

ええ、私は知っています。私はそれが現在Chromeで動作することに気づいていました。もちろん、古いChromeがある限り、jQueryは古いChromeの修正をそこに保存しなければなりません。 –

関連する問題