2013-05-05 54 views
-5

我想製作擴展程序以從網頁中移除某些廣告。從網頁中移除廣告

我想我必須要學會從一個較長的文本刪除文本行做到這一點:

例如,給出這樣的文字:

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的文本?

as text will be used document.body.InnerHTML;我要拿出一些垃圾:}

+0

您應該表現出一些努力,只是不要說「我不知道」 – 2013-05-05 14:29:01

+1

您的示例文本全部在一行上?或者它應該是四行? – bjelli 2013-05-05 14:30:03

+0

作爲文本將被使用document.body.InnerHTML;我想要拿出一些garbaje:} – user2200585 2013-05-05 14:34:02

回答

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'); 
+0

如果我想放一個document.body.InnerHTML;在文字中,我應該這樣做是的? - > var text = document.body.InnerHTML; ? – user2200585 2013-05-05 14:38:33

+0

@ user2200585:好的,或者只是使用'lines = document.body.innerHTML.split('\ n');'。出於好奇,你爲什麼要這麼做呢? :) – Ryan 2013-05-05 14:39:58

+0

我會使鉻擴展刪除一些廣告.. :)從網站 – user2200585 2013-05-05 14:46:12

2

對於您的項目(創建一個Chrome擴展刪除廣告),你不實際上 需要操作文本,您需要操作HTML代碼或更多的指定:DOM,代表瀏覽器中HTML代碼的文檔對象模型。 你可以用jQuery很方便地做到這一點。

這裏是你如何刪除所有鋰的containting DELETEME:

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

這裏有一個小提琴:http://jsfiddle.net/bjelline/RrCGw/

嘗試了這一點,最好的方法是在你的瀏覽器中打開書房的開發工具,並鍵入命令進入控制檯,那麼你會立即看到效果。

例如:google for「學習javascript」 - 您可能會看到一則廣告。 看看HTML源代碼,找出id是在 id「tads」中。現在打開控制檯並輸入

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

而且廣告將消失。


您特意詢問了有關操縱文本的問題。在操作文本時,瞭解正則表達式是一個不錯的主意 - 不僅僅是JavaScript,您可以在許多編程語言中使用它們。

如果你的整個文本存儲在變量字符串,你可以這樣做:

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

以取代XXXX行。只需使用一個空字符串作爲替代完全清空:

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

的代表‘任何字符,根據需要經常重複’,其文本之前和之後DELETEME匹配 「*」。此正則表達式僅適用於一行,因此其他行上的文本不會更改。

查看http://jsfiddle.net/bjelline/Wc7ve/的工作示例。

但是,如上所述:這不是您的項目的正確工具。

+0

我看到這個例子雖然使用谷歌搜索,但它只是取代DELETEME,不是嗎? – user2200585 2013-05-05 14:37:29

+1

不,這個*做匹配其餘部分的技巧 – bjelli 2013-05-05 14:42:18