Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript删除HTML中的远程内容链接_Javascript_Html_Dom - Fatal编程技术网

使用javascript删除HTML中的远程内容链接

使用javascript删除HTML中的远程内容链接,javascript,html,dom,Javascript,Html,Dom,我必须扫描远程内容(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.getElementsByTagNam

我必须扫描远程内容(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 = '';
    }
 }
var mySpan=document.createElement(\“span\”);
mySpan.innerHTML=\“\”;
var块=p[键];
var re=新的RegExp(块);
a=document.getElementsByTagName('iframe');
对于(i=0;我在我的案例中工作?

我不想在Android上使用JQuery etc库。

获取文档中的所有元素
document.getElementsByTagName('*')

一旦您这样做了,使用您认为合适的代码检查每个元素的状况

这将确保您已经检查了所有内容,如果您使用jQuery,我可以让您的想法更简单


但是作为一个纯粹的JavaScripter,我非常尊重!获取文档中的所有元素
document.getElementsByTagName('*')

一旦您这样做了,使用您认为合适的代码检查每个元素的状况

这将确保您已经检查了所有内容,如果您使用jQuery,我可以让您的想法更简单


但是,作为一名纯Java脚本编写者,我非常尊重你!

不要在HTML上使用任何regexp-使用DOM

  • 查看HTML标准中可以包含外部链接的标记的属性列表
  • 对从返回的集合进行循环
  • 根据黑名单检查属性,并使用and进行清理(另外,您将拥有标准化的数据,无需担心有人试图通过funky逃逸溜过去!)
  • 其中许多属性将被称为
    src
    ,因此您可能希望在标记名
    上循环*
    使用此属性只是为了防止将来出现问题/妄想症。或者只是循环所有元素上的所有属性。尽管如此,这将非常缓慢,并且仍然不能保证有人不会使用难以与纯文本区分的URL(如IP或没有协议的域名)来避免它,因此我建议不要完全扫描

  • 不要在HTML上使用任何regexp-使用DOM

  • 查看HTML标准中可以包含外部链接的标记的属性列表
  • 对从返回的集合进行循环
  • 根据黑名单检查属性,并使用and进行清理(另外,您将拥有标准化的数据,无需担心有人试图通过funky逃逸溜过去!)
  • 其中许多属性将被称为
    src
    ,因此您可能希望在标记名
    上循环*
    使用此属性只是为了防止将来出现问题/妄想症。或者只是循环所有元素上的所有属性。尽管如此,这将非常缓慢,并且仍然不能保证有人不会使用难以与纯文本区分的URL(如IP或没有协议的域名)来避免它,因此我建议不要完全扫描

  • +1.你自己尝试提出解决方案做得很好+1.你自己尝试提出解决方案做得很好谢谢你的回复Liam,我会检查并更新答案。我在执行代码时也遇到了问题。如果我用我提到的脚本调用browser.loadURL,在onPageFinished()事件中,它不会在所有元素上正确执行。但如果我在站点开始加载后继续执行该脚本,直到它完成加载(每1秒运行一次脚本),脚本正常工作。原因可能是什么?感谢Liam的回复,我将检查此问题并更新答案。我在执行代码时也遇到问题。如果我使用我提到的脚本调用browser.loadURL,则在onPageFinished()事件中,它不会在所有元素上正确执行。但是,如果我在站点开始加载后一直执行该脚本,直到它完成加载(每1秒运行一次脚本),该脚本就会工作。原因可能是什么?