使用javascript删除HTML中的远程内容链接
我必须扫描远程内容(Iframe标记、Img标记、脚本标记等)的HTML,并根据某些黑名单删除其中存在的链接。 我能够删除其src指向黑名单URL的Iframe、img和script标记使用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
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秒运行一次脚本),该脚本就会工作。原因可能是什么?