0

Spotiy フレームワーク内で個人用アプリを構築しています。一重/二重引用符、アンパサンドなどの特殊文字を含むトラックとアーティストのタイトルに問題があります...

解決策を探しているときに、replace() メソッドを使用したハックを見つけました。しかし、もう少し掘り下げてみると、Spotify 自体のサンプル コードを見つけて、奇妙なことに気付きました。基本的に、サンプル コードがトラック情報を収集し、それを

タグ、トラック タイトルは特殊文字を適切に表示しましたが、alert() などの情報を表示しようとしたり、テキスト ボックスに値として表示しようとすると、特殊文字が台無しになったタイトルが出てきました。

繰り返しますが、replace() メソッドを使用してこれを修正できますが、なぜこの動作が発生するのか知りたいです (インナー HTML が正しく表示されているのに対し、アラートとテキスト ボックスが間違っている)。

使用したコードは次のとおりです。

http://codetidy.com/3891/

編集:

私が読んだところによると、innerHTML は実際には特殊文字を一般的な Web フォームにエンコードしているようです。しかし、値をテキスト ボックスに配置しているので、独自のフィルターを作成しました。

http://codetidy.com/3892/

4

1 に答える 1

0

まず、HTML エンコーディングと、(たとえば) innerHTML と innerText の違い (および、これら 2 つの違いを正しく処理しないことによる XSS セキュリティへの影響) について調べます。

現在、Spotify Api (少なくとも Spotify アプリ内のもの。Web API の動作は異なります) は、デフォルトで HTML エンコードされた値を返します。

文字列のテキスト エンコーディングが確実に必要な場合は、文字列に対して decodeForText() メソッドを使用します (so var textname = data.name.decodeForText();)。

この問題に関する Spotify のドキュメントも参照してください。

于 2012-11-05T10:00:16.470 に答える