【问题标题】:Remove ads from a Webpage从网页中删除广告
【发布时间】:2013-05-05 14:27:30
【问题描述】:

我想制作 chrome 扩展来从网页中删除一些广告。

我想我必须学会从较长的文本中删除文本行才能做到这一点:

例如,给定以下文本:

This is text that contains some string bla This is text that contains
some string bla This is text DELETEME some string bla This is text
that contains some string bla This is text that contains some string
bla

如何删除包含字符串DELETEME 的整行文本?

作为文本将使用 document.body.InnerHTML;我想拿出一些垃圾:}

【问题讨论】:

  • 你应该表现出一些努力,只是不要说“我不知道”
  • 您的示例文本都在一行上?还是应该是四行?
  • 作为文本将使用 document.body.InnerHTML;我想拿出一些garbaje :}
  • 谷歌搜索“javascript删除行”发现:stackoverflow.com/questions/2528076/…
  • @user2200585 在 StackOverflow 上,您应该熟悉您所询问的主题。这不是一个复制粘贴论坛。

标签: javascript


【解决方案1】:

您可以将文本分成几行:

var lines = text.split('\n');

然后过滤掉包含该字符串的那些:

lines.filter(function(line) {
    return line.indexOf('DELETEME') === -1;
})

然后将其重新组合在一起:

text = lines.filter(function(line) {
    return line.indexOf('DELETEME') === -1;
}).join('\n');

【讨论】:

  • 如果我想放一个document.body.InnerHTML;在文本中,我应该这样做是吗? -> var text = document.body.InnerHTML; ?
  • @user2200585:当然,或者直接使用lines = document.body.innerHTML.split('\n');。出于好奇,您为什么要对页面执行此操作? :)
  • 我将制作 chrome 扩展程序以从网站上删除一些广告.. :)
  • @user2200585:这不是一个好方法;使用 DOM。另外,这只是一个学习 JavaScript 的业余项目,还是很严肃的事情?
  • 这是一个爱好项目,我没有从这个项目中赚取任何收入,只是让我的生活更轻松:))(看看我有多少不喜欢 :D 哈哈)
【解决方案2】:

对于您的项目(创建 chrome 扩展程序以删除广告),您实际上并没有 需要操作文本,您需要操作 HTML 代码,或者更具体地说:DOM,在浏览器中表示 HTML 代码的文档对象模型。 使用 jQuery 可以很方便地做到这一点。

以下是删除所有包含 DELETEME 的 li 的方法:

$('li:contains(DELETEME)').remove();

这是一个小提琴:http://jsfiddle.net/bjelline/RrCGw/

最好的尝试方法是在浏览器中打开 den 开发者工具并在控制台中输入命令,然后您将立即看到效果。

例如:谷歌搜索“学习 javascript” - 您可能会看到广告。 查看 HTML 源代码,找出 id 在 div 中 编号为“tads”。现在打开控制台并输入

$('#tads').remove();

广告就会消失。


您特别询问了有关处理文本的问题。在处理文本时,学习正则表达式是个好主意 - 不仅适用于 JavaScript,您还可以在许多编程语言中使用它们。

如果您的整个文本都存储在变量字符串中,您可以这样做:

string = string.replace(/.*DELETEME.*/, "XXXX");

用 XXXX 替换该行。只需使用空字符串作为替换即可将其完全清空:

string = string.replace(/.*DELETEME.*/, "");

“.*”代表“任何字符,根据需要重复多次”,它匹配 DELETME 之前和之后的文本。这个正则表达式只适用于一行,所以其他行的文本不会改变。

有关工作示例,请参阅 http://jsfiddle.net/bjelline/Wc7ve/

但是,如上所述:这不是您项目的正确工具。

【讨论】:

  • 我在谷歌搜索时看到了该示例,但它只是替换了 DELETEME ,不是吗?
猜你喜欢
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多