2012-02-22 18 views
1

私はこの質問のタイトルが不正確かもしれないことを認識していますが、私はJavascriptで文字をクリーンアップするためにXSLTのようなものをどのように使うことができるのだろうと思っていました。たとえば、特定の情報を抽出するために使用するJSONがあります。その1つはホテル名です。問題は、ジョージのホテルなど、名前にアポストロフィを持つホテルです。私はこれをChromeまたはFirefoxで表示するとうまく動作しますが、IE8ではgeorge'sと表示されます。javascriptで出力エスケープを無効にすることはできますか?

私のコードは次のとおりです。

var hotel_title = j.data.hotels[i].title 

アイブ氏は試してみました:

var zz = escape(hotel_title); 

任意の助けをいただければ幸いです。

+1

あなたは、文字列とどのようにあなたのJSONのように見えるが表示されたコードを表示する必要があります。これらの情報がなければ、あなたの質問に適切に答えにくいです。 – ThiefMaster

+1

JSONデータに '' 'の代わりに' ' 'がありますか?もしそうなら、あなたは本当にソースで問題を解決すべきです(JSONにはテキストの代わりにXMLの断片(HTMLの部分ではなく、XML構造です)が含まれています)。 – Quentin

+0

@ThiefMaster&Quentin - コメント/提案をいただきありがとうございます。私はJSONファイル(haventはまだ試みました)から問題を解決する可能性は非常に高いですが、JSON APIを与えられていて、物事の? – Hatzi

答えて

2

次のようになります。

  • あなたの文書はHTML

    ChromeとFirefoxのとき'として'をレンダリングすることで役に立つことしようとしていますさ彼らはしないでください('はXML —、したがってXHTML — ではなく、 HTML)、実際はちょうど混乱しています。 IEは、エンティティを'に置き換えないことによって適切に動作しています。

または:

  • あなたの文書はXHTML

    IEはこれを適切に検出されていないですので、'で実体を交換していません。


    あなたの2つの解決策

は以下のとおりです。

  • は明示的にHTMLではない、XHTMLように原稿をセット

    (古いIEをサポートしたい場合は理想的ではない)

  • 送信停止ソースからのデータ内の210。代わりに'をJSONに書き込んでください。

    (あなたがこれを行う必要があります)

+0

明示的にドキュメントをXHTMLに設定することは、 'application/xhtml + xml'コンテンツタイプで提供することを意味します。これにより、古いバージョンのIEはそれを全くレンダリングすることを拒否します。 – Quentin

+0

@クエンティン:OK、それは劣った解決策です。しかし、我々はOPのブラウザの要件を知らない。 –

+0

@ Lightness Races in Orbit - コメントをいただきありがとうございます。少なくとも、幸いなことに、私はJSONにアクセスしています。私はJavascriptで簡単な解決策を望んでいました。 – Hatzi

0

JSONの文字列は、すでにhtmlエンコードされていますか?はいの場合は、それをオブジェクトのinnerHTMLプロパティに割り当てる必要があります。そうでない場合は、innerTextに割り当てます。

+0

「'」は、HTMLではなくXMLエンコーディングを示します。 HTMLには「'」はありません。 – Quentin

+1

これはJSONを生成するときに彼がxmlエスケープ関数を使用していることを意味するかもしれません。 – ThiefMaster

-2

一つの簡単な解決策はどちらか

var elt = document.createElement("div"); 
elt.innerHTML = yourString; 
unescapedString = elt.textContent; 
+1

いいえ、 '' 'はHTMLエンティティではないため、最初はIEで「間違って」表示されています。 – Quentin

+0

@Quentin:有効な回答を下ろす前に、たとえばChrome Developer Toolsコンソール(ChromeのどのページでもCtrl-Shift-J)でこのコードを実行することをおすすめします。 –

+1

「ChromeまたはFirefoxでこれを表示すると、IE8ではうまく動作します...」という質問から。 Chromeは「'」-in-htmlエラーを使用して回復するため、Chrome開発ツールでそのコードを実行すると何も表示されません。 – Quentin

関連する問題