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

时间:2012-08-03 07:22:52

标签: javascript html dom

我必须扫描HTML以获取远程内容(Iframe标签,Img标签,脚本标签等),并根据某些黑名单删除其中存在的链接。 我能够删除其src指向黑名单URL的iframe,img脚本标签。

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 = '';
    }
 }

类似于脚本和img标签。但是可以有更多这样的标签。我是否可以使用通用解决方案遍历HTML中的所有标记并查找/替换列入黑名单的链接 我对Javascript很新,所以它的基础知识有点弱。我可以this solution工作吗? 我不想使用JQuery等库,因为我在Android上这样做。

2 个答案:

答案 0 :(得分:2)

获取文档document.getElementsByTagName('*')

中的所有元素

一旦你这样做,你可以使用你认为合适的代码来检查你的病情。

这将确保您已经检查了所有内容,如果您使用的是jQuery,我可以使思考更简单。

但是非常尊重纯JavaScripter!

答案 1 :(得分:2)

不要在HTML上使用任何正则表达式 - 使用DOM。

  1. 查看可以包含外部链接的标记上的属性列表的HTML标准。
  2. 循环从document.getElementsByTagName(tagname)返回的集合。
  3. 使用.getAttribute.removeAttribte检查黑名单和清理属性(奖励:您将获得规范化数据,无需担心人们试图通过质朴的逃脱来偷偷摸摸!)。
  4. 其中许多属性将被称为src,因此您可能希望使用此属性循环标记名称"*",以防止未来/偏执。或者只是遍历所有元素的所有属性。这将是非常缓慢但仍然不能保证有人不会使用难以区分纯文本的URL(如IP或没有协议的域名)来避免它,所以我建议不要进行全扫描。