Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 365

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Есть страница на которую чтобы попасть нужно залогиниться (HTTP запрос). Загружается странца с javascript. нужно ввести артикул, а результат выполнения загнать в TMemo. Bcgjkmpe. делфи 6 инди 6. TWebBrowser использовать нехочу. Вопрос: Есть ли информация или пример "Выполнение javascript из delphi"?. Подскажите где копать или емли есть готовые примеры поделитесь пожалуяста. Спасибо.

Приложение:
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  3.  
  4.  
  5. <HTML>
  6. <HEAD>
  7. <LINK href="/spare.css" rel=stylesheet type=text/css>
  8. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
  9.  
  10. <script type='text/javascript'>
  11. var req=null;
  12. var console=null;
  13. var READY_STATE_UNINITIALIZED=0;
  14. var READY_STATE_LOADING=1;
  15. var READY_STATE_LOADED=2;
  16. var READY_STATE_INTERACTIVE=3;
  17. var READY_STATE_COMPLETE=4;
  18. function sendRequest(){
  19. req=initXMLHTTPRequest();
  20. var s = document.getElementById("sn");
  21. if (req){
  22. req.onreadystatechange=onReadyState;
  23. req.open("GET","http://accentservice.kiev.ua/mod_perl/spare/article.pl",true);
  24. req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  25. req.send("sn="+s.value);
  26. }
  27. }
  28. function initXMLHTTPRequest(){
  29. var xRequest=null;
  30. if (window.XMLHttpRequest){
  31. xRequest=new XMLHttpRequest();
  32. }else if (window.ActiveXObject){
  33. xRequest=new ActiveXObject("Microsoft.XMLHTTP")
  34. }
  35. return xRequest;
  36. }
  37. function onReadyState(){
  38. var ready=req.readyState;
  39. var data=null;
  40. if (ready==READY_STATE_COMPLETE){
  41. data=req.responseText;
  42. }else{
  43. data="<p>&nbsp;&nbsp;&nbsp;<img src=await.gif>"
  44. }
  45. toConsole(data);
  46. }
  47. function toConsole(data){
  48. if (console!=null){
  49. console.innerHTML=data;
  50. }
  51. }
  52. window.onload=function(){
  53. console=document.getElementById('console');
  54. }
  55. </script>
  56. </HEAD>
  57.  
  58.  
  59. <BODY>
  60.  
  61.  
  62. style="width: 24px;
  63. height: 24px;
  64. " type="image"
  65. onClick="sendRequest();"><br>
  66. <div id='console'></div>
  67.  
  68. </BODY>
  69. </HTML>
  70.  
  71.  
  72.  


Yuran Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Yuran (статус: Посетитель), 26 февраля 2008, 16:39 [#1]:

Попробовал сделать то чте вы мне посоветовали и столкнулся с такой проблемой, что этот проклятый javascript работает только с IE. В мозиле даже кнопочки не появляется. Че делать?. Будут идеи?
Вадим К

Вадим К (статус: Академик), 26 февраля 2008, 23:20 [#2]:

Тогда нужно использовать снифер и смотреть что же там идёт. К сожалению, есть много "программистов", которые не удосуживаются проверять свои творения на чём нибуть отличном от того, что у них есть. Правда можно попробывать "обмануть" скрипт, подменив в фаерфоксе юзерагент - некоторые скрипты просто проверяют, что это не IE и игнорируют всё остальное.
Я всё таки рекомендую использовать сниффер. Полдня мучений с тем, что бы разобраться как он работает и в дальнейшем это мощный инструмент. Например для поиска паразитного трафика на своей машине.
Мне например нравиться этот http://www.ethereal.com/ - он бесплатный и можно настроить фильтрацию.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.03 сек.