Вверх ↑
Этот топик читают: Гость
Ответов: 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] [214]
Ответов: 3349
Рейтинг: 233
#2: 2011-08-31 10:12:10 ЛС | профиль | цитата
Это скорее не произвол HTML, это произвол IE.
Зачем стараться обеспечивать работоспособность методов, которые и не должны работать.
3042 писал(а):
<a href = http://yandex.ru title=href=ya>ya</a>

Не один здравомыслящий верстальщик так писать не будет
карма: 1

0
Ответов: 1926
Рейтинг: 172
#3: 2011-08-31 10:19:53 ЛС | профиль | цитата
Ivann писал(а):
Это скорее не произвол HTML, это произвол IE.


FireFox тоже такую запись понимает.

Ivann писал(а):
Не один здравомыслящий верстальщик так писать не будет

Да, но фрагмент href может встретиться в самом адресе ссылки, например href="abchref.html". И простой поиск подстроки тоже может выдать не ту позицию, которая нужна.
карма: 9
0
Ответов: 3349
Рейтинг: 233
#4: 2011-08-31 10:23:06 ЛС | профиль | цитата
3042 писал(а):
href="abchref.html"

А что DOM в таком случае выдает? Полную или относительную ссылку?
карма: 1

0
Ответов: 1926
Рейтинг: 172
#5: 2011-08-31 10:52:37 ЛС | профиль | цитата
Ivann писал(а):
А что DOM в таком случае выдает? Полную или относительную ссылку?


Если использовать мой пример code_25045.txt, то выдаёт about:blankabchref.html
------------ Дoбавленo в 10.52:
Но это потому, что я в создаваемый IE загружаю первоначально about:blank
карма: 9
0
Ответов: 3349
Рейтинг: 233
#6: 2011-08-31 12:19:02 ЛС | профиль | цитата
А Silent?
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2011-08-31 12:32:18 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2021-05-22 09:41:43
карма: 0

0
Ответов: 3349
Рейтинг: 233
#8: 2011-08-31 12:33:13 ЛС | профиль | цитата
3042 писал(а):
href="abchref.html"

Ответ
карма: 1

0
Ответов: 1731
Рейтинг: 68
#9: 2011-08-31 13:11:14 ЛС | профиль | цитата
[offtop] Не жуйте себе мозг, делайте поиск блока href" " и все.
Пусть сайт под программу делают [/offtop]
карма: 1

0
Ответов: 1926
Рейтинг: 172
#10: 2011-08-31 13:16:06 ЛС | профиль | цитата
Ivann писал(а):
А Silent?


Что это такое?
карма: 9
0
Ответов: 3349
Рейтинг: 233
#11: 2011-08-31 13:29:12 ЛС | профиль | цитата
Silent Property
карма: 1

0
Ответов: 1926
Рейтинг: 172
#12: 2011-08-31 15:06:30 ЛС | профиль | цитата
Ivann, не помогает!
Тут, я думаю, что-то связано с самим VBJScript. Но в коде ничего не нашёл.

Впрочем, я нашёл другое решение:
code_25049.txt
карма: 9
0
файлы: 1code_25049.txt [719B] [226]
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)