2011-08-22 12 views
10

誰かがhtml5shimスクリプトの始めと終わりの仕組みを説明できますか?javascript:/ * @ @ */meanは何ですか?

スクリプトが/*@で始まり、このような@*/で終了します。

/*@cc_on(function(a,b){function ........ (this,document);@*/ 

やっ/*@ @*/は何ですか?

私は、/ * * /シーケンスがそれらの間のすべての行をコメントアウトすることを期待しますが、スクリプトが実行されるので、ここではそのことはできませんか?よくわかりません。

で発見:

http://html5shim.googlecode.com/svn/trunk/html5.js

答えて

14

IEのJScriptのは、 '条件付きコンパイル'、特別なブラウザを隠すトリックをサポートしていますコメントの中の特定の情報。この考え方は、/*@[email protected]*/がこのような特殊な文字列であり、この新しい構文レベル機能を導入するために再利用することが安全であるということです。

html5shivは、これを使ってほとんどのブラウザで実行しようとしないコードを作成します(あなたと同じように、すべてを推薦として解釈します)が、IEにとって特別な意味を持ちます。

MS doc here。これをサポートする他のJSエンジンはありません。通常、より明示的な振る舞いの嗅覚コードを好むかもしれませんが、そうでなければスニッフィングにさらされないIE機能を本当に検出する必要がある場合は、便利です。

+1

"これ以外のJSエンジンはこれをサポートしていません" ...その点ではないのですか? ;) – Artfunkel

+1

@Artfunkel:他のブラウザでは、他のブラウザの拡張機能を利用しているので、他の人がCCの機能を実装している可能性はありません。おそらく良い考えではないでしょうが、誰もがそれを排他的にIEを検出するために使用します... – bobince

7

それは、 "条件付きコンパイル" のためのIEイズムだ:http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

+0

しかし、彼の例では、そのスクリプトでメタ条件を使用していないので、ここではこれを使用していますか? –

+0

良い質問...? – mikkelbreum

+1

を使用することは、@ccがIE上でのみ実行されることを保証するためです。 –

関連する問題