Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№119-11-2008 18:43:19

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

вытащить все ссылки с активной вкладки

Здравствуйте.
Существует ли функция для расширения которой можно вытащить все ссылки на активной вкладке?
Что-нибудь вроде:

Выделить код

Код:

var arraylinks = curWindow.document.links;

С этой командой  код вообще не хочет работать... Отлаживаю с помощью расширения Custom Buttons.

Пробовал до этого брать содержимое странички через

Выделить код

Код:

window.getBrowser().contentDocument.body.innerHTML

и обрабатывать регулярным выражением, но на некоторых сайтах часть ссылок игнорировалась.

Отсутствует

 

№219-11-2008 19:36:19

homo_nudus
Участник
 
Группа: Extensions
Зарегистрирован: 19-02-2007
Сообщений: 193
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

А разве content.document.links не работает?

Отсутствует

 

№319-11-2008 20:22:03

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

homo_nudus пишет

А разве content.document.links не работает?

Работает.

Немного поправлю. Нужно чтобы кроме самой ссылки было и её название.  :rolleyes:

Отсутствует

 

№419-11-2008 20:33:59

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Орец
content.document.links[i].textContent


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№519-11-2008 20:51:07

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Спасибо, теперь полный набор :)

А как можно захватить ещё и фреймы на страничке? :whiteflag:

Добавлено 19-11-2008 21:06:31
Т.е. во фреймах тоже ссылки есть, но приведёнными выше способами они не доступны.

Отредактировано Орец (20-11-2008 02:02:17)

Отсутствует

 

№619-11-2008 21:16:37

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Орец пишет

А как можно захватить ещё и фреймы на страничке?

Примерно вот так:

Выделить код

Код:

function parseWin(win) {
	someFunction(win);
	for(var i = 0, len = win.frames.length; i < len; i++)
		parseWin(win.frames[i]);
}
parseWin(content);

Отредактировано Infocatcher (19-11-2008 21:19:09)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№719-11-2008 21:57:26

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Получилось. Правда какая-то сложная конструкция выходит чтобы добраться до названий всех ссылок.
А можно как бы создать документ, вставить в него все фреймы, и там уже просто искать командой

Выделить код

Код:

content.document.links[i].textContent

.
Или так будет менее производительно?

Отсутствует

 

№819-11-2008 22:33:31

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Гм, а что сложного-то?

Выделить код

Код:

var linksArr = [];
function parseLink(link) {
    var href = link.href;
    var text = link.textContent; // Может понадобиться дополнительная обработка для <a ...><img /></a>
    // Делаем что-нибудь с href и text.
    linksArr.push(href + " - " + text);
}
function getLinks(win) {
    var links = win.document.links;
    for(var i = 0, len = links.length; i < len; i++)
        parseLink(links[i]);
}
function parseWin(win) {
    getLinks(win);
    for(var i = 0, len = win.frames.length; i < len; i++)
        parseWin(win.frames[i]);
}
parseWin(content);
alert(linksArr.join("\n"));

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№920-11-2008 10:25:41

Орец
Участник
 
Группа: Members
Зарегистрирован: 18-08-2006
Сообщений: 84
UA: Firefox 3.0

Re: вытащить все ссылки с активной вкладки

Здорово :)
Infocatcher, спасибо.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]