2017-01-11 1 views
1

私は私自身のいくつかのクローラソフトウェア上で動作し、私のユーザーの一人が、ちょうどそれがこのようなコードでは動作しません報告:Javascriptの構文とHTMLエンティティ

onclick="document.location.href = 'http://www.example.com/somepage.aspx'; return false;" 

内のJavaScriptコードを使用'すなわちの代わりに、 'は文字列の始まりの終わりを指定する

私がテストしたブラウザでは、JavaScriptの構文エラーは報告されません...それをクリックするとうまくいくようです...私は脳を持つ必要があります崩壊 - 文字列のまわりで'ですgitimate Javascriptコード?

+0

JSは文字列区切り文字に '' 'と' ''を使用します...新しいJSも ''利用可能なバッククォートを持っています –

答えて

4

'文字列のまわりで本当に正当なJavascriptコードですか?

いいえブラウザは値をJavaScriptとして評価する前に文字参照をデコードします。

+0

ブラウザはHTML部分の文字参照をデコードしますが、 document.location.href - ブラウザがスクリプトコードを入力しましたか?ブラウザがJSのエンジンで拡張された砂糖を追加したと思う傾向があるほど、文字参照のデコードを適用するのは非常に直感的ではありません:)しかし、それが仕様の一部であればそれには正当な理由であり、私はそれに合致する必要があります。 – Tom

+1

私は答えですでに述べたことを繰り返すことができました。コードは、参照がデコードされた後にのみ評価されます*。私。ブラウザはコンテンツの内容を気にせずに属性の値を取得し、すべての参照をデコードしてさらに処理します。正確なインラインプロパティが評価されたときは私はあなたに伝えられませんが、DOM要素の属性値を取得すると、その値が既にデコードされていることがわかります:https://jsfiddle.net/3a6yxqtL/ –

+0

ありがとう助けと答え(受け入れられる) – Tom