2010-07-13 73 views
0

我想爲Google Chrome編寫一個擴展,用於檢測網頁上的源代碼片段並自動將它們複製到剪貼板。在包含字符串的元素之後添加文本

我是新來的JavaScript和jQuery,所以對於第一步,我想嘗試一個非常簡單的情況。

使用本網站爲例: http://www.swharden.com/blog/2010-03-05-realtime-fft-graph-of-audio-wav-file-or-microphone-input-with-python-scipy-and-wckgraph/

我想找到包含字符串「進口」的元素,並添加文本「下面是一些代碼」的元素之後。有人能給我一個線索嗎?

我的第一次嘗試是$('*:contains("import ")').after("Here's some code");,但是在後面插入的每個元素,包括父母,當我只想插入最低級別的孩子之後。

編輯:我想要代碼在任何網站上工作。所以我想找到任何包含「導入」的元素。特定於示例網站的解決方案並不是我正在尋找的。

+0

此文本是否在''或其他類型的已知元素中? – 2010-07-13 22:23:04

+0

@Nick不,我希望這可以在任何網站上工作,所以元素類型是未知的。 – 2010-07-13 22:49:19

回答

0

通過每個文本節點去在頁面上,搜索查詢 - "import"。如果匹配,則在parent()之後附加字符串"Here's some code"

$("body *").contents().filter(function() { 
    if(this.nodeType != Node.TEXT_NODE) { 
     return; 
    } 
    if(this.nodeValue.indexOf('import') == -1) { 
     return; 
    } 
    $(this).parent().after("Here's some code"); 
}); 

使用您給出的示例,這將在每行代碼後添加"Here's some code"。要找出代碼的確切位置,您必須應用一些啓發式。

0

作品我對你的例子網站

$(".prettyprint span:contains('import')").after(" Here's some code"); 

確保運行此代碼作爲語法prettifier後回調完成

+0

是的,但我想把它推廣到其他網站。我想找到包含「導入」的任何元素。 「.prettyprint」並不總是在那裏。 – 2010-07-13 22:45:08

相關問題