2

を使用して、API からさまざまな文字列を受信して​​います。次のように、これらの文字列から html を削除しています。

var comb = $(qu1[i].title + qu1[i].content).text()

次のような文字列で問題が発生しました: San Diego Zoo's Animal Bytes:、構文エラーを返します。jquery がこの文字列に問題を抱えている理由がわかりません。

どうすればこれを処理できますか?

4

1 に答える 1

2

これはセレクターではないため、新しいバージョンの jQuery (1.9+) は で始まらない html 文字列を解析しなくなりました<。試す:

var comb = $('<div>').append($.parseHTML(qu1[i].title + qu1[i].content)).text();

$.parseHTMLjQuery 1.8+ で利用可能で、XSS の防止に役立ちます (これはすべての JS を削除するのではなく、スクリプト タグのみを削除します。onevent属性は保持されます)。ただし、ソースが信頼できる場合は、html を直接追加できます。私はより安全な側にいることを好みます。=]

基本的に、コードはそのdiv場で要素 ( ) を作成し、きれいに解析されたマークアップを追加してから、そのテキスト プレゼンテーションを取得します。独自性を主張することはできませんが、同様のアプローチがHow to decode HTML entities using jQuery? に示されています。および他の多くのスレッド。

div要素やそのラッパー jQuery オブジェクトへの参照は保持されないため、これらは GC によって非常に高速に収集されます。

参照:

jQuery Core 1.9 アップグレード ガイド -jQuery(htmlString)jQuery(selectorString)

于 2013-04-14T19:18:59.360 に答える