-5

我想制作 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; 我想拿出一些垃圾:}

4

2 回答 2

2

您可以将文本分成几行:

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');
于 2013-05-05T14:31:36.153 回答
2

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

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

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

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

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

例如:谷歌搜索“学习 javascript”——你可能会看到一个广告。查看 HTML 源代码,找出 id 位于 id 为“tads”的 div 中。现在打开控制台并输入

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

广告将消失。


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

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

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

用 XXXX 替换该行。只需使用一个空字符串作为替换来完全清空它:

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

“.*”代表“任何字符,根据需要重复多次”,它与 DELETEME 之前和之后的文本匹配。此正则表达式仅适用于一行,因此其他行的文本不会更改。

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

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

于 2013-05-05T14:35:46.617 回答