2010-07-13 3 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

Этот текст является «» или другим типом известного элемента, например? –

+0

@Nick Нет, я бы хотел, чтобы это работало на любом сайте, поэтому тип элемента неизвестен. –

ответ

0

Пройтись каждого текстового узла на странице и поиск по запросу - "import". Если он соответствует, добавьте строку "Here's some code" после того, как она будет parent().

$("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» не всегда будет там. –