Вверх ↑
Ответов: 1926
Рейтинг: 172
#1: 2011-08-31 09:47:33 ЛС | профиль | цитата
Это не так просто, как кажется. Я задался этим вопросом и сначала думал, что достаточно определить, где у ссылки href, затем найти после знака равенства текст и скопировать его. Единственной проблемой мне представлялось определить, заключён адрес в двойные или одинарные кавычки или же вообще без кавычек, то есть:

<a href=http://yandex.ru></a>
<a href='http://yandex.ru'></a>
<a href="http://yandex.ru"></a>


Но оказалось всё гораздо сложнее. Оказывается, тот же IE спокойно понимает и такую запись:
<a href = http://yandex.ru>ya</a>


И даже такую запись браузер спокойно переваривает:
<a href = http://yandex.ru title=href=ya>ya</a>

Несмотря на два знака равенства и отсутствие кавычек в атрибуте title.

Из-за этого просто поиск подстроки href теряет смысл, так как найден может быть при этом вовсе не атрибут. Из-за такого произвола в HTML очень трудно его парсить. Я нашёл пока только одно решение:

code_25045.txt

Первый метод здесь создаёт объект, третий - уничтожает. А на второй надо подать текст вида <a href...>...</a>, и на выходе получаем адрес.

Но возникает проблема. Если между открывающим и закрывающим тегами пусто, пробелы или табуляции, то программа выдаёт ошибку (ie.document.getElementsByTagName(...)0.href - есть null или не является объетом).

Вопросы:
1. Ваши предложения по вытаскиванию адреса из гиперссылок.
2. Как не давать появляться вышеописанной ошибке?
карма: 9
0
файлы: 1code_25045.txt [610B] [215]