![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
EmbeddedWB1 и idHTTP1
flaxe © (2006-11-23 20:53:00)Программа загружает Html-код через idHTTP1 в EmbeddedWB1,
Все происходит через OnBeforeNavigate2 ставлю Cancel:=True и получаю код.. вот только проблема такая: При нажатии на ссылку получается путь на локальный адресс и естественно файла такоо не существует и дело до OnBeforeNavigate2 даже не доходит, что тут можно сделать?
Cawa (2006-11-25 08:55:00) [1]Ну что я могу тебе сказать, ничего страшного в этом коде я не увидел.
Мое мнение остается прежним, можно просто закачать html код + внешние скриптовые файлы (если в них хранятся ссылки на элементы которые ты собираешься хранить локально).
После отпарсировать код и пересобрать со своими изменениями (переделать ссылки на все файлы php, т.е. осуществлять проверку является ли эта ссылка глобальной, если нет, то добавить спереди необходимый путь).
И в конце отобразить в окне твоего броузера. (Ну может еще какие-нибудь доработки сделать, к примеру можно кроме графики локально хранить внешние скриптовые и CSS файлы.)
flaxe (2006-11-24 19:37:00) [2]Нет доступа нету,
<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-24 16:52:00) [3]А можно взглянуть на HTML код?
Ты имеешь понятие как генерируется код та том сервере?
Есть ли доступ к исходникам серверной части?
flaxe (2006-11-24 13:05:00) [4]TEmbeddedWB - http://www.bsalsa.com/downloads.html
Вотс проблема там другая, еслибы все ссылки задавались только методом <a href.... всебы решилось очень просто, но большенство ссылок задаются javascript-функциями они все слишком разные =(
Cawa (2006-11-24 08:58:00) [5]С компонентом TEmbeddedWB я не работал и даже не представляю где его взять. Но насколько я понял тебе нужно подменять ссылки на графику в получаемом HTML коде. Если так то никаких проблем я не вижу, скачай в интернете бесплатные модули по HTML парсингу (если не хочешь заморачиваться по написанию своего).
flaxe (2006-11-24 01:37:00) [6]Вот мне собственно нужно каким-то образом отлавить событие по которому EmbeddedWB1 получает ссылку, по которой далее он осуществляет переход, грубо говоря гдето между кликом мышкой на ссылку и событием OnBeforeNavigate2 , до того как он проверил "Существует Ли такая ссылка" подменить её на другую.
flaxe (2006-11-23 22:36:00) [7]Короче программа - клиент к одной онлайн игре, всё действие игры происходит на сайте, цель программы - подменять пути картинок на локальные ("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);
Ш-К (2006-11-23 21:03:00) [8]1. ставлю Cancel:=True и получаю код..
2. При нажатии на ссылку получается путь на локальный адресс
3. и естественно файла такоо не существует и дело до OnBeforeNavigate2 даже не доходит
Ставлю виртуальное пиво, тому кто догадается, что имел ввиду автор.
Хотя бы по одному пункту.