1

私のサイトのユーザーは、別のサイトからページ全体をコピーして(Ctrl + Aで)、特別なテキストエリアに貼り付けて、htmlから有用なデータを取得できます。

しかし今、私はいくつかの問題を見ています。貼り付けたhtmlコードをjQueryでラップすると:

var page = $(html);

私のブラウザ(Chrome)は、このhtmlにあるすべての写真(写真だけではないかもしれません)のダウンロードを開始します。安全な SSL 接続を使用し、別のサイトから画像をダウンロードすると、ブラウザのセキュリティ ロック アイコンが打ち消されるので、これは私にとっては悪いことです。

画像のダウンロードを無効にすることはできますか?無効にできない場合、不要なコンテンツをダウンロードせずに html を解析するために使用できるライブラリはどれですか?

4

2 に答える 2

1

imgjQuery に渡す前に、正規表現を実行してすべてのタグを削除できます。

例えば:

$( html.replace( /<img .*?>/ig, '' ) );​​​​

正規表現修飾子と構文の詳細については、MDN を確認してください: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

于 2012-07-12T14:42:43.560 に答える
0

$(html)幅、高さ、スタイル、距離、属性などを計算するために、jQueryが実際に非表示のページにhtmlコードを挿入します。この操作では常にブラウザの組み込みDOMパーサーが使用されます。これが、画像、iframe、背景画像の理由です。 、スクリプト、リンクなどにアクセスします。

使用できます$.parseXML(html); が、htmlコードは有効な形式のxml(xhtml)である必要があります。

ただし、唯一の懸念事項が画像である場合は、次のコードを使用できます。

// take the src attribute, change it to hiddensrc
// credits: http://stackoverflow.com/a/1310706/608886
var html = html.replace(/<img([^>]*)\ssrc=(['"])(?:[^\2\/]*\/)*([^\2]+)\2/gi, 
    "<img$1 hiddensrc=$2$3$2");

// parse the code
var parsed = $(html);

///////////////
//
//   do whatever you want here
//
//////////////

// put the src attribute back at your discretion
parsed.find(img[hiddensrc]).each(function(){ 
    $(this).attr('src',$(this).attr('hiddensrc')); 
}); 
于 2012-07-12T14:56:32.590 に答える