ライン614:なぜ `ウィンドウ[ "evalの"]は.call(画面、データ)を書き込む; jQueryの1.7rc1の`
window[ "eval" ].call(window, data);
なぜ単に
eval.call(window, data);
を書きませんか?
ライン614:なぜ `ウィンドウ[ "evalの"]は.call(画面、データ)を書き込む; jQueryの1.7rc1の`
window[ "eval" ].call(window, data);
なぜ単に
eval.call(window, data);
を書きませんか?
答えはここにある:Decoding jQuery、
ジム・ドリスコルは、より標準尊重のブラウザで、 あなたはeval.call(ウィンドウ、データ)を使用することができることが分かったが、ChromeとIEのために、物事 少し違います。
のInternet Explorer:eval.call(ウィンドウ、データ)クロームの休憩が、ウィンドウ[ "evalの" ]は.call(ウィンドウ、データ:IEがwindow.execScript(データ)
Chromeを使用しているようです)はChrome上で動作し、他の非IEブラウザ と同様に、これは上記の回避策に基づいています。
sourceを調べたところ、this linkが見つかりました。クロームのeval.call(window,src)
休憩、
- それは一致しないことについて コンテキストを文句:強調したテキストを見てみましょう。奇妙な - 私はなぜこの がそうかもしれないGoogleをできなかった。しかし、後で幸運にもいくつかの推測があり、私は window.eval.call(window、src)がIE以外のすべてのブラウザで動作することを発見しました。今、私は "var j = 1"と言うと、ウィンドウ[j]は設定されている変数です...だから、 それは良いです。なぜ追加のウィンドウを追加する必要があるのですか? Chromeで? は確かではありませんが、私は推測できますが、間違っている可能性が高いです。
したがって、window.eval
は、ChromeでglobalEval
の作業を行うために使用されます。
クロム14でうまくいくようだその記事は2009年のものなので、今修正されたChromeのバグであれば驚くことはありません。 –
@JamesAllardice Chromeの最新バージョンを使用していないユーザーはいます。 jQueryは、できるだけ多くのブラウザをサポートするように設計されています。 –
ええ、私は知っています。私はそれが現在Chromeで動作することに気づいていました。もちろん、古いChromeがある限り、jQueryは古いChromeの修正をそこに保存しなければなりません。 –
ええ、 'eval.call'は少なくともChrome 14ではうまく動作します。 –
私は説明を見つけた理由を書いていませんでした.... Chrome 14は古いバージョンよりも標準に近いですし、jqueryはクロスブラウザであることを目指しているだけでなく、現在のブラウザではないので、 – scrappedcola
ええ、それも私が思ったことです。私はちょうどそれがクロム14で動作していることに気づいていた。jQueryは、それが動作しないブラウザが周りにある限り(それは永遠になるだろう!) –