|
Вопрос # 1 365/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Есть страница на которую чтобы попасть нужно залогиниться (HTTP запрос). Загружается странца с javascript. нужно ввести артикул, а результат выполнения загнать в TMemo. Bcgjkmpe. делфи 6 инди 6. TWebBrowser использовать нехочу. Вопрос: Есть ли информация или пример "Выполнение javascript из delphi"?. Подскажите где копать или емли есть готовые примеры поделитесь пожалуяста. Спасибо.
Приложение: Переключить в обычный режим-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-
- <HTML>
- <HEAD>
- <LINK href="/spare.css" rel=stylesheet type=text/css>
- <meta http-equiv="Content-Type" content="text/html;
charset=Windows-1251">
-
- <script type='text/javascript'>
- var req=null;
- var console=null;
- var READY_STATE_UNINITIALIZED=0;
- var READY_STATE_LOADING=1;
- var READY_STATE_LOADED=2;
- var READY_STATE_INTERACTIVE=3;
- var READY_STATE_COMPLETE=4;
- function sendRequest(){
- req=initXMLHTTPRequest();
- var s = document.getElementById("sn");
- if (req){
- req.onreadystatechange=onReadyState;
- req.open("GET","http://accentservice.kiev.ua/mod_perl/spare/article.pl",true);
- req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- req.send("sn="+s.value);
- }
- }
- function initXMLHTTPRequest(){
- var xRequest=null;
- if (window.XMLHttpRequest){
- xRequest=new XMLHttpRequest();
- }else if (window.ActiveXObject){
- xRequest=new ActiveXObject("Microsoft.XMLHTTP")
- }
- return xRequest;
- }
- function onReadyState(){
- var ready=req.readyState;
- var data=null;
- if (ready==READY_STATE_COMPLETE){
- data=req.responseText;
- }else{
- data="<p> <img src=await.gif>"
- }
- toConsole(data);
- }
- function toConsole(data){
- if (console!=null){
- console.innerHTML=data;
- }
- }
- window.onload=function(){
- console=document.getElementById('console');
- }
- </script>
- </HEAD>
-
-
- <BODY>
-
-
- style="width: 24px;
- height: 24px;
- " type="image"
- onClick="sendRequest();"><br>
- <div id='console'></div>
-
- </BODY>
- </HTML>
-
-
-
 |
Вопрос задал: Yuran (статус: Посетитель)
Вопрос отправлен: 22 февраля 2008, 10:59
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Yuran!
Выполнить java скрипт можно, но это потянет в конце кончов пол интернетэксплорера или написания собственного парсера. Но это глупое занятие. Если мне приходиться решать подобную задачу, я поступаю по простому. Для этого я держу на диске Mozilla Firefox (да это единственная цель) и установил для неё плагин HttpLive. (можно найти например здесь http://livehttpheaders.mozdev.org/installation.html).
Теперь запускаем фаерфокса, идём в меню Инструменты - Live Http Headers.
Появиться небольшое окно. Проверим, что на первой вкладке внизу есть галочка Capture (делать захват). Теперь идем на нужный сайт и ручками делаем всё что надо. переходим на наше окошко плагина и все запросы ответы видно как на ладоне. Их удобно скопировать в блокнот (или что то в этом стиле), поудалять лишние запросы (запросы картинок, css файлов).
Посозерцав полученный листинг, берём делфи и начинаем реализовывать.
Единственное, что обычно надо, это включить поддержку кукисов (AllowCookies).
Можно конечно использовать сниффер, но в данном случае это будет перегиб.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 22 февраля 2008, 21:59
Оценка за ответ: 5
Комментарий к оценке: Спасибо. Идею понял. Буду заниматься
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 26 февраля 2008, 23:20; участников в обсуждении: 2.
|
Yuran (статус: Посетитель), 26 февраля 2008, 16:39 [#1]:
Попробовал сделать то чте вы мне посоветовали и столкнулся с такой проблемой, что этот проклятый javascript работает только с IE. В мозиле даже кнопочки не появляется. Че делать?. Будут идеи?
|
|
Вадим К (статус: Академик), 26 февраля 2008, 23:20 [#2]:
Тогда нужно использовать снифер и смотреть что же там идёт. К сожалению, есть много "программистов", которые не удосуживаются проверять свои творения на чём нибуть отличном от того, что у них есть. Правда можно попробывать "обмануть" скрипт, подменив в фаерфоксе юзерагент - некоторые скрипты просто проверяют, что это не IE и игнорируют всё остальное.
Я всё таки рекомендую использовать сниффер. Полдня мучений с тем, что бы разобраться как он работает и в дальнейшем это мощный инструмент. Например для поиска паразитного трафика на своей машине.
Мне например нравиться этот http://www.ethereal.com/ - он бесплатный и можно настроить фильтрацию.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|