Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

TWebBrowser портит ссылки в коде страницы   Найти похожие ветки 

 
Pcrepair ©   (2012-02-25 18:53) [0]

Добрый день
есть общеизвестный код вывода закачанного кода ХТМЛ-страницы при помощи TWebBrowser (RAD2010)

procedure TForm1.Button1Click(Sender: TObject);
var
 URL, Flags, TargetFrameName, PostData, Headers: Olevariant;
 MS : String;
begin
 URL := Edit1.Text;
 Flags := 0;
 TargetFrameName := 0;
 Postdata := 0;
 Headers := 0;
 WebBrowser1.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
 repeat
   Application.ProcessMessages;
 until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
 if WebBrowser1.Document <> nil then
 MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;
 begin
     Memo1.Clear;
     Memo1.Text := MS;
   end;
end;
initialization
Set8087CW($133F);

Код позволяет вывести в МЕМО код страницы после обработки ЖАБА-скриптов. однако при этом искажаются ссылки.
Код страницы, закачанный idHTTP (только ссылки)
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
<a href="http://www.yandex.ru" onclick="c(this,17,1083)">Яндекс</a>
<a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия Лебедева</a>
Код страницы, закачанный TWebBrowser
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
<A onclick=c(this,17,1083) href="http://www.yandex.ru">Яндекс</A>»</P>
<A onclick=c(this,17,1084) href="http://www.artlebedev.ru">Студия Артемия Лебедева</A>
Вопрос:
что нужно изменить в коде, чтобы ссылки не портились, конечно если это возможно
Всем ответившим спасибо.


 
sniknik ©   (2012-02-25 20:01) [1]

насколько вижу ссылки совершенно не "испорчены"... один в один.
или имеется ввиду вот это странное »</P> в конце второй? или порядок атрибутов/пропись в именах тегов? так это совершенно пофигу.

кстати это не закачанный код, а уже разобранный в DOM и "возвернутый" обратно...


 
Pcrepair ©   (2012-02-25 20:18) [2]

закачаный код
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
разобраный код
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
это не один в один, если внимательно присмотреться


 
sniknik ©   (2012-02-25 21:05) [3]

порядок атрибутов, если ты про это роли не играет. НИКАКОЙ.


 
sniknik ©   (2012-02-25 21:11) [4]

p.s. тебе нужен не код, а текст. разбирай его тогда сам, сохраняя форматирование/выполняя по нему скрипты... тоже сам, т.к. скрипт тоже может "попортить" содержимое.


 
Pcrepair ©   (2012-02-25 21:44) [5]

не угадал
мне нужно понять, можно ли переделать код
MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml; так чтобы сохранялась структура, или нет
вопрос вообще к тем кто хорошо знаком с TWebBrowser


 
sniknik ©   (2012-02-25 22:26) [6]

> вопрос вообще к тем кто хорошо знаком с TWebBrowser
это типа на слабо? :) ну, ну. удачи.


 
Pcrepair ©   (2012-02-26 09:56) [7]

это типа - не понимаешь о чем топик, переспроси, а не постИ свои фантазии


 
sniknik ©   (2012-02-26 10:05) [8]

тебе уже сказали про DOM. не понимаешь, что это и, почему тут компонент самого TWebBrowser дело десятое? переспроси(а лучше загугли) не тупи.


 
sniknik ©   (2012-02-26 10:31) [9]

скопировать в файл с расширением html, открыть в IE (без всяких TWebBrowser) нажать любую ссылку
<html>

<head>
<title>Тест "порчи"</title>
<meta content="text/html; charset=windows-1251" http-equiv=Content-type>

<script language="JavaScript" type="text/javascript">
<!--
 function c() {
   document.body
   alert(document.body.innerHTML);
 }
//-->
</script>
</head>

<body>
 <a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
 <a href="http://www.yandex.ru" onclick="c(this,17,1083)">Яндекс</a>
 <a href="http://www.artlebedev.ru" onclick="c(this,17,1084)">Студия Артемия Лебедева</a>
</body>

</html>

причем тут TWebBrowser???


 
sniknik ©   (2012-02-26 10:35) [10]

пустое
> document.body
в функции лишнее, ошибки не дает, не обратил внимания.


 
Pcrepair ©   (2012-02-26 16:47) [11]


> причем тут TWebBrowser???

как причем? оно же в качестве браузера используется
или по твоему
MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;
это не передача в ПЕРЕМ результата работы DOM?
во всяком случае результат работы скриптов там есть


 
Pcrepair ©   (2012-02-26 16:58) [12]

для большей понятности, хотя  к существу вопроса это и не относится
в дальнейшем страница обрабатывается по определенному алгоритму, удаляется все кроме тегов разметки текста, текста и ссылок
пр этом a href и A onclick не одно и то же


 
sniknik ©   (2012-02-26 17:23) [13]

> как причем?
так, при чем? если пример без него прямо в IE дает тоже самое. вот при чем?

> или по твоему
это по твоему, не знаю ю чего ты там понял, но говорил о другом.

> a href и A onclick не одно и то же
и то и другое никуда не делось, называется как называлось, значения имеют те же т.е. все то же самое, ОДИН В ОДИН.
т.е. в чем проблема? так и не удосужился сообщить.


 
sniknik ©   (2012-02-26 17:27) [14]

> страница обрабатывается по определенному алгоритму
вот к этому ламерскому алгоритму и должны быть претензии. раз он не справляется с прописью в именах тегов, "закладывается" на определенный порядок атрибутов, и т .д.


 
Pcrepair ©   (2012-02-26 18:17) [15]

похоже ты так ничего и не понял, объясняю еще раз:
в коде страницы в том числе и в ИЕ8 и в ХРОМ
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
после обработки ХТМЛ-кода

MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;

получается:
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
и это видно в МЕМО, поскольку

Memo1.Text := MS;

ну что тут неясно?


 
brother ©   (2012-02-26 18:39) [16]

мдя... видимо тут одни тупые...


 
brother ©   (2012-02-26 18:40) [17]

> обрабатывается по определенному алгоритму

где он?

> удаляется все кроме тегов разметки текста

допустим

> пр этом a href и A onclick не одно и то же

а вообще то это может быть и одно и тоже, нужно правильно парсить


 
Pcrepair ©   (2012-02-26 18:47) [18]

специально для братана, повторяю вопрос

> Вопрос:
> что нужно изменить в коде, чтобы ссылки не портились, конечно
> если это возможно
> Всем ответившим спасибо.

и не нужно ничего парсить
страница обрабатывается по определенному алгоритму, удаляется все кроме тегов разметки текста, текста и ссылок


 
Германн ©   (2012-02-26 19:01) [19]

И не лень автору параллельно на четырех форумах пудрить всем мозги неким "определенным алгоритмом".


 
Pcrepair ©   (2012-02-26 19:27) [20]

Удалено модератором


 
Anatoly Podgoretsky ©   (2012-02-26 19:49) [21]

Cсылки не портятся, а приводятся к единому, каноническому виду.


 
sniknik ©   (2012-02-26 20:16) [22]

> ну что тут неясно?
действительно, ну что тут может быть неясно
атрибут href из первой ссылки -
href="http://mail.yandex.ru"
из второй
href="http://mail.yandex.ru"

атрибут onclick из первой ссылки -
onclick="c(this,17,1080)"
из второй
onclick=c(this,17,1080)

все согласно правилам html, все равнозначно, т.е. "монописуально". любой движок поймет и то и то.

а "определенный алгоритм" не понимает? в ... ну в корзину, скажем, такой алгоритм. и ламера его писавшего тоже куда подальше. не понимают его как же.

> а приводятся к единому, каноническому виду.
ну, еще вопрос, что является каноническим... IE тут не законадатель, хотя и самый массовый движок. а вот мозилла (gecko) приводит к другому виду (не каноническому? ;) но зато по W3C).
хотя, как говорил, пофигу, порядок атрибутов роли не играет.


 
sniknik ©   (2012-02-26 20:18) [23]

> пудрить всем мозги неким "определенным алгоритмом".
типа, "алгоритм" - document.body.innerText, готово... (только IE, мозила/... не поймут)
?


 
Pcrepair ©   (2012-02-26 20:19) [24]

вопрос был о другом

> Вопрос:
> что нужно изменить в коде, чтобы ссылки не портились, конечно
> если это возможно

на вопрос ты ответил, вместо ответа начал уводить в сторону
если не знаешь ответа - так и скажи, никто знает все


 
Sha ©   (2012-02-26 20:26) [25]

что есть порченая ссылка?


 
sniknik ©   (2012-02-26 20:34) [26]

если не доходит, то прямым текстом - собрать разобранное в целое в том же порядке, что было невозможно. т.к. всем накласть на порядок атрибутов, актуальнее другое.
"в сторону" это значит попытки объяснить, переключить внимание на решение собственно задачи, так воспринимаются?
блин и где у нас "черный список". когда он так нужен???!!!


 
Pcrepair ©   (2012-02-26 20:34) [27]

ну, мне не лень

в коде страницы в том числе и в ИЕ8 и в ХРОМ
<a href="http://mail.yandex.ru"onclick="c(this,17,1080)">Войти в почту</a>
после обработки ХТМЛ-кода

MS := (WebBrowser1.Document as IHTMLDocument2).body.innerhtml;

получается:
<A onclick=c(this,17,1080) href="http://mail.yandex.ru">Войти в почту</A>
и это видно в МЕМО, поскольку

Memo1.Text := MS;

так вот подмена TWebBrowser <a href= на <A onclick= и есть порченая ссылка
для моей программы, поскольку программа код
<a href= и далее оставляет а, код
<A onclick= и далее удаляет, поскльку в нем нет ничего, для меня, важного


 
Pcrepair ©   (2012-02-26 20:36) [28]

Удалено модератором
Примечание: Кончай нападать на всех


 
sniknik ©   (2012-02-26 20:40) [29]

> тут не детский сад
сложно представить, по уровню вопросов...

> желательно аргументированно
DOM!!! аргумент с первого ответе, поискал бы как это работает.


 
Pcrepair ©   (2012-02-26 20:44) [30]


> DOM!!! аргумент с первого ответе, поискал бы как это работает.

ну вообще то такой ответ нельзя считать даже ответом, не то что аргументированным ответом.
если все будут отсылать в гуголь то откуда там возьмутся ответы?(с)


 
Anatoly Podgoretsky ©   (2012-02-26 21:14) [31]

> sniknik  (26.02.2012 20:16:22)  [22]

У каждого свой канонический вид.


 
Dimka Maslov ©   (2012-02-26 21:14) [32]

Вот ты тут уже целый месяц паришь всем мозги со своим перемом, а ничему так и не научился, всё сводится к одному - выньте мне да положьте, вы ничего не понимаете и вообще. И что самое характерное, аргументированный ответ на твой вопрос был дан практически в самом начале твоего сюда пришествия. Может проблема не в этом форуме, а в чём-то другом?



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.32 c
2-1344342520
Andrey K
2012-08-07 16:28
2013.03.22
Возведение в квадрат


2-1342701748
Bolg
2012-07-19 16:42
2013.03.22
Проблемы с плавающей запятой


15-1352775498
Abcdef123
2012-11-13 06:58
2013.03.22
Современные тенденции пользовательского интерфейса


8-1230109371
Вера
2008-12-24 12:02
2013.03.22
графика


15-1347559192
***
2012-09-13 21:59
2013.03.22
Возможно ли такое?