0

Web ページのコンテンツを取得するために、IE 8 で XDomainRequest を使用しています。reponseText には、マークアップが div に挿入されないようにするエスケープ文字と Unicode 文字が含まれています。これは、返されるデータの例です。

<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\">\u000d\u000a<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u000d\u000a<head>\u000d\u000a    <title>...<\/title>\u000d\u000a    <script src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.7.1\/jquery.min.js\" type=\"text\/javascript\"><\/script>\u000d\u000a<\/head>\u000d\u000a<body>\u000d\u000a\u000d\u000a<div style=\"font-size:24px;font-weight:bold\">\u000d\u000aText Headline: \u000d\u000a<\/div>\u000d\u000a\u000d\u000a<div style=\"float:left;width:50%;margin:0;padding:0;\">\u000d\u000a<p>Lorem ipsum dolor sit amet<\/p>\u000d\u000a\u000d\u000a<p>In nec imperdiet lectus. 

decodeURI または decodeURIComponent を使用すると、「デコードする URI は有効なエンコーディングではありません」というエラーが表示されます。

誰かが HTML をクリーンアップする方法や正規表現を提案できますか?

4

1 に答える 1

-1

私の簡単なテストに基づいて:

regex = /\\([^u])/g;
// put it in a JSON object so that JS doesn't automatically de-escape
string = JSON.stringify({response: '<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\">\u000d\u000a<html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u000d\u000a<head>\u000d\u000a    <title>...<\/title>\u000d\u000a    <script src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.7.1\/jquery.min.js\" type=\"text\/javascript\"><\/script>\u000d\u000a<\/head>\u000d\u000a<body>\u000d\u000a\u000d\u000a<div style=\"font-size:24px;font-weight:bold\">\u000d\u000aText Headline: \u000d\u000a<\/div>\u000d\u000a\u000d\u000a<div style=\"float:left;width:50%;margin:0;padding:0;\">\u000d\u000a<p>Lorem ipsum dolor sit amet<\/p>\u000d\u000a\u000d\u000a<p>In nec imperdiet lectus.'});

string.replace(regex, '$1');

Unicode を除くすべてのエスケープ スラッシュを置き換えます。JS でスラッシュをエスケープしないで使用する方法は他にあまりないと思います。

于 2012-04-11T14:22:53.380 に答える