1

リモート コンテンツ (iframe タグ、Img タグ、スクリプト タグなど) の HTML をスキャンし、特定のブラックリストに基づいてそれらに存在するリンクを削除する必要があります。src がブラックリストに登録された URL を指している Iframe 、img 、script タグを削除できます。

var mySpan = document.createElement(\"span\");
 mySpan.innerHTML = \"\";
 var block = p[key];
 var re = new RegExp(block);
 a = document.getElementsByTagName('iframe');
 for(i=0;i<a.length;i++)
 {
    var str = a.item(i).src;
    if(str.match(re))
     {

          a[i].parentNode.replaceChild(mySpan, a[i]);
        // + "a.item(i).src = '';
    }
 }

script および img タグについても同様です。しかし、そのようなタグは他にもたくさんある可能性があります。HTML のすべてのタグをトラバースし、ブラックリストに登録されているリンクを検索/置換するための一般的なソリューションを用意できますか? Javascript を初めて使用するので、基本が少し苦手です。私の場合、この解決策は機能しますか? Androidでこれを行っているため、JQueryなどのライブラリを使用したくありません。

4

2 に答える 2

2

ドキュメント内のすべての要素を取得するdocument.getElementsByTagName('*')

それを行ったら、各要素の状態をチェックするのに適したコードを使用してください。

これにより、すべてをチェックしたことを確認できます。jQuery を使用している場合は、より簡単に考えることができます。

しかし、純粋な JavaScripter であることに敬意を表します。

于 2012-08-03T08:10:08.477 に答える
2

HTML では正規表現を使用しないでください - DOM を使用してください。

  1. 外部リンクを含めることができるタグの属性のリストについては、HTML 標準を確認してください。
  2. から返されたコレクションをループしdocument.getElementsByTagName(tagname)ます。
  3. .getAttribute属性をブラックリストに照らしてチェックし、 andでクリーンアップし.removeAttribteます (おまけ: 正規化されたデータが得られるので、ファンキーなエスケープでこっそり通り抜けようとする人を心配する必要はありません!)。
  4. これらの属性の多くは と呼ばれるsrcため、この属性を使用してタグ名をループして、"*"将来を保証/偏執的にすることをお勧めします。または、すべての要素のすべての属性をループします。これは非常に遅くなりますが、平文と区別するのが難しい URL (プロトコルのない IP やドメイン名など) を使用して誰かがそれを回避しないことを保証するものではないため、フル スキャンはお勧めしません。
于 2012-08-03T10:03:28.043 に答える