Расширение браузера Chrome, которое обнаруживает хэштеги на странице - PullRequest
0 голосов
/ 22 мая 2011

В качестве личного проекта я хотел бы создать расширение Chrome, которое будет искать все хэштеги на странице. Я не очень разбираюсь в JS или jquery, поэтому мне интересно, как мне к этому подойти?

EDIT: Расширение Chrome внедряет JavaScript после загрузки страницы, но мне нужно отсканировать весь документ на наличие хэштега. Это просматривает весь документ, который я не уверен, как сделать.

Спасибо!

1 Ответ

0 голосов
/ 22 мая 2011

Если вы имеете в виду просто привязывать теги с href, в котором есть #, то:

var aTags = document.getElementsByTagName("a");
for(var index = 0; index < aTags.length; index++){
    if(aTags[index].href.indexOf("#") != -1){
        alert("found one");
    }
}

Или, если вы хотите что-то более общее, один из способов вернуть всю веб-страницу просто:

document.body.innerHTML  //A string containing all the code/text inside the body of the webpage.

И затем вы можете выполнить поиск / замену по indexOf или по регулярному выражению в зависимости от того, что конкретно вы хотите сделать.

Но если вы знаете, что искомый хэштег всегда находится в некотором контейнерекак якорь или даже просто div с определенным классом, тогда я бы пошел с этим вместо того, чтобы работать со всей страницей.Вот список полезных методов для анализа веб-страницы:

document.getElementsByTagName("a");  //already mentioned
document.getElementsById("id");
document.getElementsByName("name");
//and a custom function to get elements by class name(I did  not write this)
function getElementsByClass(searchClass, domNode, tagName)
{ 
if (domNode == null) domNode = document;
if (tagName == null) tagName = '*';
var el = new Array();
var tags = domNode.getElementsByTagName(tagName);
var tcl = " "+searchClass+" ";
for(i=0,j=0; i<tags.length; i++)
{ 
    var test = " " + tags[i].className + " ";
    if (test.indexOf(tcl) != -1)
    {
        el[j++] = tags[i];
    }
} 
return el;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...