我必须扫描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上这样做。
答案 0 :(得分:2)
获取文档document.getElementsByTagName('*')
一旦你这样做,你可以使用你认为合适的代码来检查你的病情。
这将确保您已经检查了所有内容,如果您使用的是jQuery,我可以使思考更简单。
但是非常尊重纯JavaScripter!
答案 1 :(得分:2)
不要在HTML上使用任何正则表达式 - 使用DOM。
document.getElementsByTagName(tagname)
返回的集合。.getAttribute
和.removeAttribte
检查黑名单和清理属性(奖励:您将获得规范化数据,无需担心人们试图通过质朴的逃脱来偷偷摸摸!)。src
,因此您可能希望使用此属性循环标记名称"*"
,以防止未来/偏执。或者只是遍历所有元素的所有属性。这将是非常缓慢但仍然不能保证有人不会使用难以区分纯文本的URL(如IP或没有协议的域名)来避免它,所以我建议不要进行全扫描。