我想制作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;我想拿出一些垃圾:}
答案 0 :(得分: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');
答案 1 :(得分:2)
对于您的项目(创建Chrome扩展程序以删除广告),实际上并不是这样 需要操作文本,需要操作HTML代码,或者更具体的操作:DOM,即表示浏览器中HTML代码的文档对象模型。 你可以使用jQuery非常方便地完成这项工作。
以下是删除包含DELETEME的所有li的方法:
$('li:contains(DELETEME)').remove();
这是一个小提琴:http://jsfiddle.net/bjelline/RrCGw/
尝试此操作的最佳方法是在浏览器中打开den developer工具并在控制台中输入命令,然后您将立即看到效果。
例如:谷歌“学习javascript” - 你可能会看到一则广告。 查看HTML源代码,找出id在div中的内容 id“tads”。现在打开控制台并输入
$('#tads').remove();
广告将会消失。
您特别询问有关操纵文字的问题。在操作文本时,了解正则表达式是一个好主意 - 不仅仅是JavaScript,你可以在许多编程语言中使用它们。
如果您的整个文本存储在变量字符串中,您可以这样做:
string = string.replace(/.*DELETEME.*/, "XXXX");
用XXXX替换该行。只需使用空字符串作为替换就可以完全清空它:
string = string.replace(/.*DELETEME.*/, "");
“。*”代表“任何角色,必要时经常重复”,匹配 DELETEME之前和之后的文本。此正则表达式仅适用于一行,因此其他行上的文本不会更改。
有关工作示例,请参阅http://jsfiddle.net/bjelline/Wc7ve/。
但是,如上所述:这不是适合您项目的工具。