【问题标题】:Remove remote content links in HTML using javascript使用 javascript 删除 HTML 中的远程内容链接
【发布时间】:2012-08-03 07:22:52
【问题描述】:

我必须扫描 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 = '';
    }
 }

同样适用于 script 和 img 标签。但是可以有更多这样的标签。我可以有一个通用的解决方案来遍历 HTML 中的所有标签并查找/替换被列入黑名单的链接吗 我对 Javascript 很陌生,所以它的基础知识有点薄弱。 this solution 可以在我的情况下工作吗? 我不想在 Android 上使用 JQuery 等库。

【问题讨论】:

  • +1 做得很好,因为您尝试自己提出解决方案

标签: javascript html dom


【解决方案1】:

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

一旦你这样做了,使用你认为适合的代码来检查每个元素是否符合你的条件。

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

但是,作为一个纯粹的 JavaScripter 非常尊重!

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢利亚姆的回复,我会检查并更新答案。我在执行代码时也遇到了问题。如果我在 onPageFinished() 事件上使用我提到的脚本调用 browser.loadURL,它不会在所有元素上正确执行。但是,如果我在站点开始加载后继续执行该脚本,直到它完成加载(每 1 秒运行一次脚本),该脚本就可以工作。可能是什么原因?
    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2013-06-17
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多