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

Вниз

EmbeddedWB1 и idHTTP1   Найти похожие ветки 

 
flaxe ©   (2006-11-23 20:53) [0]

Программа загружает Html-код через idHTTP1 в EmbeddedWB1,
Все происходит через OnBeforeNavigate2  ставлю Cancel:=True и получаю код.. вот только проблема такая: При нажатии на ссылку получается путь на локальный адресс и естественно файла такоо не существует и дело до OnBeforeNavigate2   даже не доходит, что тут можно сделать?


 
Ш-К   (2006-11-23 21:03) [1]

1. ставлю Cancel:=True и получаю код..
2. При нажатии на ссылку получается путь на локальный адресс
3. и естественно файла такоо не существует и дело до OnBeforeNavigate2   даже не доходит

Ставлю виртуальное пиво, тому кто догадается, что имел ввиду автор.
Хотя бы по одному пункту.


 
flaxe ©   (2006-11-23 22:36) [2]

Короче программа - клиент к одной онлайн игре, всё действие игры происходит на сайте, цель программы - подменять пути картинок на локальные ("c:\...\").
Я решил сделать это используя два компонента TEmbeddedWB и IdHTTP1

При старте программа загружает в TEmbeddedWB пустую страницу c:\...\start.html ,
Далее следует EmbeddedWB1.Navigate("www.site.com");
В процедуре OnBeforeNavigate2:
Cancel:=True;
html:=idHttp1.GET(URL);
EmbeddedWB1.OleObjects.Document.Body.InnerHTML:=Html;
Все.. указанная страница загрузилась в браузер, при этом картинки загружаются с c:\...\images....
НО проблема в следующем:
все ссылки ссылаются также на c:\...\
Поидеи Cancel:=True должна былабы отменить эту загрузку, но прежде выскакивает сообщение с ошибкой 404 - файл не найден, а процедура OnbeforeNavigate2 не вызывается. Пытался делать замену всех ссылок через string replace  "href=" на "href=http://www.site.com/", но некоторые ссылки указаны не относительно корня, а с http://...
Как можно исправить эту ситуацию? Т.е. мне нужно чтобы при нажатии на ссылку, не выскакивала ошибка, а передавалась в Idhttp1.GET("www.site.com/"+URL);


 
flaxe ©   (2006-11-24 01:37) [3]

Вот мне собственно нужно каким-то образом отлавить событие по которому EmbeddedWB1 получает ссылку, по которой далее он осуществляет переход, грубо говоря гдето между кликом мышкой на ссылку и событием OnBeforeNavigate2 , до того как он проверил "Существует Ли такая ссылка" подменить её на другую.


 
Cawa ©   (2006-11-24 08:58) [4]

С компонентом TEmbeddedWB я не работал и даже не представляю где его взять. Но насколько я понял тебе нужно подменять ссылки на графику в получаемом HTML коде. Если так то никаких проблем я не вижу, скачай в интернете бесплатные модули по HTML парсингу (если не хочешь заморачиваться по написанию своего).


 
flaxe ©   (2006-11-24 13:05) [5]

TEmbeddedWB - http://www.bsalsa.com/downloads.html
Вотс проблема там другая, еслибы все ссылки задавались только методом <a href.... всебы решилось очень просто, но большенство ссылок задаются javascript-функциями они все слишком разные =(


 
Cawa ©   (2006-11-24 16:52) [6]

А можно взглянуть на HTML код?
Ты имеешь понятие как генерируется код та том сервере?
Есть ли доступ к исходникам серверной части?


 
flaxe ©   (2006-11-24 19:37) [7]

Нет доступа нету,

<HTML>
<HEAD>

<link rel="stylesheet" type="text/css" href="../css/styles1.css">

<SCRIPT language="javascript">
function goTo(lt) { with (document.location_select) { locat.value=lt; submit(); } }
function regimeTo(pr) { with (document.place_regime) { place_regime.value=pr; submit(); } }

</SCRIPT>

<SCRIPT src="skin.JS"></SCRIPT>

<SCRIPT>window.top.frames.chat.Syst("Переходим в локацию >> "Спец. Магазин"");</SCRIPT></HEAD>

<BODY text="#FFFFFF" link="#F9FBA8" vlink="#F9FBA8" alink="#FFFFFF" leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0">

<SCRIPT>document.write(show_title("СПЕЦИАЛЬНЫЙ МАГАЗИН"));</script>

<TABLE width="95%" border=0 cellspacing=5 cellpadding=0 align=center>
<TR valign="top"><TD>
<image class="cssLocImage" border=0  src="../images/places/Capital/admin.jpg"></TD>
<TD width="100%">
В специальном магазине могут отовариться люди, имеющие какие-либо заслуги перед Мэрией. Причем простые монеты в ход здесь не идут, чиновник сверяется с какими-то бумажками, и точно знает сколько и чего Вы можете взять...
<TABLE>
<TR><TD><A HREF="javascript:goTo(25)"><image border=0 height=20 width=20 src="/images/miscellaneous/move_up.gif" onmouseover="this.src = "/images/miscellaneous/move_up_s.gif";" onmouseout="this.src = "/images/miscellaneous/move_up.gif";"></A></TD><TD>в Мэрию</TD><TR>
<TR><TD><A HREF="javascript:goTo(70)"><image border=0 height=20 width=20 src="/images/miscellaneous/move_right.gif" onmouseover="this.src = "/images/miscellaneous/move_right_s.gif";" onmouseout="this.src = "/images/miscellaneous/move_right.gif";"></A></TD><TD>в Магазин Последователей</TD><TR>
</TABLE>

</TD></TR>
<TR><TD valign="top" colspan=2>
<HR>

<table>
<tr><td colspan=2 align=left>Обменять Урановые Монеты на:</td></tr>
<tr><form action=exchange_points.php method=post><td><input type=hidden name=m value="-1"><input type=text class=text name=v value=0><input type=submit class=button value=Купить></td><td align=left>Монеты (80 за 1 УМ)</td></form></tr>
<tr><form action=exchange_points.php method=post><td><input type=hidden name=m value="-2"><input type=text class=text name=v value=0><input type=submit class=button value=Купить></td><td align=left>Опыт (10   за 1 УМ)</td></form></tr>

</table>
<HR>

<img src="/images/miscellaneous/quest.gif"><a href=# onClick="JavaScript:window.open("art_editor.php","_blank","scrollbars=yes,width= 600,height=600,resizable=yes")">Эдитор Артефактов</a><img src="/images/miscellaneous/quest.gif">

<HR>
<TABLE><TR><TD>Специальный Магазин</TD><TD><BUTTON class="button" onClick="goTo(0)">Обновить</BUTTON></TD></TR></TABLE>  
  <script>
  function ge( a )
  {
   if( document.all ) return document.all[a];
   else return document.getElementById( a );
  }
  function chg_price( a, b, c )
  {
   if( !( parseInt( ge( "i" + a ).number.value ) > 0 ) ) ge( "d" + a ).innerHTML = 0 + " " + c;
   else ge( "d" + a ).innerHTML = String( parseInt( ge( "i" + a ).number.value ) * b ) + " " + c;
  }
  </script>
 

</center>

.....
.....
.....

<FORM method="POST" action="no_combat.php" name="location_select">
   <INPUT type="hidden" name="locat" value=0>
   <INPUT type="hidden" name="additional" value=0>
</FORM>

<FORM method="POST" action="no_combat.php" name="place_regime">
   <INPUT type="hidden" name="place_regime" value=0>
</FORM>

</BODY>

</HTML>

Это токо в одном месте.. а вообще везде все разное!


 
Cawa ©   (2006-11-25 08:55) [8]

Ну что я могу тебе сказать, ничего страшного в этом коде я не увидел.
Мое мнение остается прежним, можно просто закачать html код + внешние скриптовые файлы (если в них хранятся ссылки на элементы которые ты собираешься хранить локально).
После отпарсировать код и пересобрать со своими изменениями (переделать ссылки на все файлы php, т.е. осуществлять проверку является ли эта ссылка глобальной, если нет, то добавить спереди необходимый путь).
И в конце отобразить в окне твоего броузера. (Ну может еще какие-нибудь доработки сделать, к примеру можно кроме графики локально хранить внешние скриптовые и CSS файлы.)



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

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

Наверх




Память: 0.5 MB
Время: 0.042 c
15-1178279473
db2admin
2007-05-04 15:51
2007.06.03
Буран и ЦПКиО им. Горького в Москве


2-1179243745
BFG9k
2007-05-15 19:42
2007.06.03
Как по имени запущенной прог. получить Handle ее главного окна ?


1-1175676113
y0zh
2007-04-04 12:41
2007.06.03
Количество колонок в Excel (без OLE)


15-1178706726
Галинка
2007-05-09 14:32
2007.06.03
А как ноныче делаются блок-схемы ??


2-1179311262
DelphiLexx
2007-05-16 14:27
2007.06.03
Как отловить момент изменения значение в Footer e