Елементи в TWebbrowser
15 отговора
367 прегледа
Елементи в TWebbrowser
ами... проблема ми е че неможах да намеря литература относно моя проблем и затова питам тук. отварям с TWebBrowser определена страница и искам да правя проверки по елементите на страницата, по-точно: ако source-а на един имг. от страницата е ..., то.... пробвахб да намеря нещо от рода на WebBrowser1.elements. ... но няма такова нещо.
Windmaster
Windmaster
Re: Елементи в TWebbrowser
Литература не ти трябва, ето кратко упътване:
1) елемента се достига с
WebBrowse.OleObject.document.element_id.property
2) за frames
WebBrowse.OleObject.document.frame_id.element_id.property
3) за forms
WebBrowse.OleObject.document.form_id.element_id.property
4) колекциите от елементи са както следва, например за линкове:
WebBrowse.OleObject.document.links [link_num].href
Една добра практика е да се ползва InterDev (от пакета Visual Studio 6) - там при писане на javascript може визуално да изследваш колекциите и свойствата на IE, после ги пренасяш в Delphi
чети и дишай по-леко
1) елемента се достига с
WebBrowse.OleObject.document.element_id.property
2) за frames
WebBrowse.OleObject.document.frame_id.element_id.property
3) за forms
WebBrowse.OleObject.document.form_id.element_id.property
4) колекциите от елементи са както следва, например за линкове:
WebBrowse.OleObject.document.links [link_num].href
Една добра практика е да се ползва InterDev (от пакета Visual Studio 6) - там при писане на javascript може визуално да изследваш колекциите и свойствата на IE, после ги пренасяш в Delphi
чети и дишай по-леко
Re: Елементи в TWebbrowser
Pechenia, благодаря за помоща, но явно аз нещо немога да се справя, ако ти можеш- щ сам ти много благодарен. Ето какво всъщност се опитвам да направя(на Delphi 6):
ето сорс на страницата, която се опитвам да обработвам:
целта ми е да задам променливата imgsource приема стойност адреса на
т.е. да приеме това "recruit.image.php?57280cc0d11a461cf641a1d001dc50e0".
проблема е, че:
1)img-а не е именуван;
2)когато пробвам WebBrowse1.OleObject.document.image_clickthrough_form.img.source ми извежда съобщение, че няма такова нещо като "image_clickthrough_form"
Ако можеш- помогни, или ми препоръчай да прочета някъде нещо повече за това
Windmaster
ето сорс на страницата, която се опитвам да обработвам:
В отговор на:
<form action="recruit.php" method="post" name="image_clickthrough_form">
<input type="hidden" name="uniqid" value="n74234f2">
<p>Click on the number shown in the image to proceed to <a href="stats.php?id=2874189">nemezius</a>'s Recruitment Center<p>
<img src="recruit.image.php?57280cc0d11a461cf641a1d001dc50e0" alt="Click on #"><p>
<table border="0" cellspacing="0" cellpadding="6">
<tr>
</tr>
<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="1" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="2" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="3" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="4" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="5" name="image_click_value"></td>
</tr>
<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="6" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="7" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="8" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="9" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="10" name="image_click_value"></td>
</tr>
<tr>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="11" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="12" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="13" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="14" name="image_click_value"></td>
<td><input style="font-family: 'Century Schoolbook', 'Times New Roman', Serif; font-size: 24pt; height: 60; width: 60;" type="submit" value="15" name="image_click_value"></td>
</tr>
</table><input type="hidden" name="hash" value="">
</form>
целта ми е да задам променливата imgsource приема стойност адреса на
<img src="recruit.image.php?57280cc0d11a461cf641a1d001dc50e0" alt="Click on #">
т.е. да приеме това "recruit.image.php?57280cc0d11a461cf641a1d001dc50e0".
проблема е, че:
1)img-а не е именуван;
2)когато пробвам WebBrowse1.OleObject.document.image_clickthrough_form.img.source ми извежда съобщение, че няма такова нещо като "image_clickthrough_form"
Ако можеш- помогни, или ми препоръчай да прочета някъде нещо повече за това
Windmaster
Редактирано от lceHot на
Re: Елементи в TWebbrowser
За твоя случай ще свърши работа:
document.images [0].src
Честно казано, аз не съм попадал на добро описание на Internet Explorer DOM досега, но мога да ти предложа два варианта:
1) отиваш на [линк], там има няколко линка за plug-ins към IE, които показват визуално структурата на една страница. Много добри отизиви има за IE DOM Inspector, само че е платен
2) Далеч по забавен, полезен и сигурен инструмент е InterDev, както вече казах. Какво направих аз за да реша твоя проблем:
2.1. Пуснах InterDev и отворих нов HTML файл, отидох в страницата Source
2.2. Копирах твоя HTML код в него (с десен бутон-> Paste as HTML)
2.3. Добавих следния код:
<script language='javascript'>
alert (document.images [ 0 ].src)
</script>
Още след "alert (document." получих падащо меню със свойствата на елемента document, в които фигурираше колекцията images. В твоя HTML картинката е първа, демек е с индекс 0. Добавих и свойството src, което ми трябваше.
2.4. Отидох в страницата Qiuck View, което фактически зареди и изпълни HTML-а и скрипта. Получих message box със
"file://C:\Temp\recruit.image.php?57280cc0d11a461cf641a1d001dc50e0"
което ми показа че съм готов с решението
document.images [0].src
Честно казано, аз не съм попадал на добро описание на Internet Explorer DOM досега, но мога да ти предложа два варианта:
1) отиваш на [линк], там има няколко линка за plug-ins към IE, които показват визуално структурата на една страница. Много добри отизиви има за IE DOM Inspector, само че е платен
2) Далеч по забавен, полезен и сигурен инструмент е InterDev, както вече казах. Какво направих аз за да реша твоя проблем:
2.1. Пуснах InterDev и отворих нов HTML файл, отидох в страницата Source
2.2. Копирах твоя HTML код в него (с десен бутон-> Paste as HTML)
2.3. Добавих следния код:
<script language='javascript'>
alert (document.images [ 0 ].src)
</script>
Още след "alert (document." получих падащо меню със свойствата на елемента document, в които фигурираше колекцията images. В твоя HTML картинката е първа, демек е с индекс 0. Добавих и свойството src, което ми трябваше.
2.4. Отидох в страницата Qiuck View, което фактически зареди и изпълни HTML-а и скрипта. Получих message box със
"file://C:\Temp\recruit.image.php?57280cc0d11a461cf641a1d001dc50e0"
което ми показа че съм готов с решението
Редактирано от Pechenia на
Re: Елементи в TWebbrowser
Точно това ми трябваше, благодаря че си отделил от времето си за един новак като мен, и за линка за литературата. Явно чак сега разбирам някои от добрите страни на InterDev
Windmaster
Windmaster
Re: Елементи в TWebbrowser
Използвах IE DOM Inspector и си ми даде инфото, зададох кода в Delphi 6, но...
Просто не се получава, и не се получава... аз ли нещо сам сбъркал?! не ми дава съобщения за глешки в кода, само това което е img-а...
Windmaster<P ID="edit"><FONT class="small"><EM>Редактирано от lceHot на 05.08.05 12:59.</EM></FONT></P>
Просто не се получава, и не се получава... аз ли нещо сам сбъркал?! не ми дава съобщения за глешки в кода, само това което е img-а...
Windmaster<P ID="edit"><FONT class="small"><EM>Редактирано от lceHot на 05.08.05 12:59.</EM></FONT></P>
Редактирано от lceHot на
Re: Елементи в TWebbrowser
WebBrowser.Navigate (url) кара браузера да зареди дадена страница, но процеса на зареждане отнема време. След като страницата е заредена, се извиква метода WebBrowser.OnDocumentComplete, чак тогава можеш да взимаш данните. Има обаче една хватка - ако страницата е от няколко фрейма, OnDocumentComplete се извиква последователно за всеки фрейм.
Значи за твоя случай:
WebBrowser.OnDocumentComplete ...
...
Label.Caption:=WebBrowser.OleObject...
чети и дишай по-леко
Значи за твоя случай:
WebBrowser.OnDocumentComplete ...
...
Label.Caption:=WebBrowser.OleObject...
чети и дишай по-леко
Re: Елементи в TWebbrowser
еее, не, вече направо ми е неудобно
, но сега пак ми изведе че:
това на какво се дължи, нали OleObject поддържа същия синтаксис както javascript?! да не би да трябва да добавя още нещо в uses? или да е нещо от версията ми на Delphi ( 6.0 )
Windmaster
това на какво се дължи, нали OleObject поддържа същия синтаксис както javascript?! да не би да трябва да добавя още нещо в uses? или да е нещо от версията ми на Delphi ( 6.0 )
Windmaster
Re: Елементи в TWebbrowser
Не се шашкай, в случая аз съм те подвел, щото ме домързя тогава да си пусна Delphi-то.
Значи кода е следния:
ShowMessage (WebBrowser1.OleObject.document.images.item (0).src);
което е и коректния начин на писане в JavaScript. Лошото е, че IE-то пуска и двата синтаксиса със скрипта, а аз винаги обичам да пиша кратко
чети и дишай по-леко
Значи кода е следния:
ShowMessage (WebBrowser1.OleObject.document.images.item (0).src);
което е и коректния начин на писане в JavaScript. Лошото е, че IE-то пуска и двата синтаксиса със скрипта, а аз винаги обичам да пиша кратко
чети и дишай по-леко
Re: Елементи в TWebbrowser
много благодаря, успях да сглобя наи-накрая програмата. но като я ползван на друг компютър, на който няма Delphi, ми извежда тази грешка:
"exception EDBEngineError in module BBImageStoringApp.exe at 0008D97E. An error occurred while attempting to initialize the Borland Database Engine (error $2108)."
От това, че няма Делфи ли е, или от нещо друго?! използвам програмата в същата директория, на която е и на моя компютър
Windmaster
"exception EDBEngineError in module BBImageStoringApp.exe at 0008D97E. An error occurred while attempting to initialize the Borland Database Engine (error $2108)."
От това, че няма Делфи ли е, или от нещо друго?! използвам програмата в същата директория, на която е и на моя компютър
Windmaster
Re: Елементи в TWebbrowser
> От това, че няма Делфи ли е, или от нещо друго?!
По-скоро е от това, че няма инсталирано BDE, което вероятно ползваш в твоята програма.
Mixy
По-скоро е от това, че няма инсталирано BDE, което вероятно ползваш в твоята програма.
Mixy
Re: Елементи в TWebbrowser
използвам Paradox7. може ли да се инсталира само BDE и как? Ако не- как мога да създам независима от БДЕ базаданни?
начинаещ съм, но всеки е започнал така
начинаещ съм, но всеки е започнал така
Re: Елементи в TWebbrowser
Не мога да намеря дискусията за базите данни, но в резюме имаш две възможности:
1) Да си направиш базата с MS Access (част от MS Office). Получава се един MDB файл, с него се работи с компонентите от страница ADO. Ще работи без никакви инсталации на всички машини с Windows 2000&XP, както и на други с инсталирано ADO - например с MS Office
2) Да си инсталираш Firebird и IBExpert (редактора за бази данни).
Лично аз ти препоръчвам 1 вариант - няма да се налага поне в началото да се бориш с транзакциите
чети и дишай по-леко
1) Да си направиш базата с MS Access (част от MS Office). Получава се един MDB файл, с него се работи с компонентите от страница ADO. Ще работи без никакви инсталации на всички машини с Windows 2000&XP, както и на други с инсталирано ADO - например с MS Office
2) Да си инсталираш Firebird и IBExpert (редактора за бази данни).
Лично аз ти препоръчвам 1 вариант - няма да се налага поне в началото да се бориш с транзакциите
чети и дишай по-леко
Можеш..
Макар че предложението на pechenia е по-добро, все пак можеш да си инсталираш само BDE - например влизаш в [линк] там си пише всичко - късмет :)
Re: Можеш..
In accordance with the Additional License Terms for BDE,
you may distribute the BDE files with your application
using an INPRISE-certified Redistributable Install program
such as InstallShield Express or another compliant install
program. You may redistribute only those BDE files selected
by the INPRISE-certified installation program.
See the BDE Links deployment notes in the file
BDEDEPLOY.TXT (found in the BDE directory) for specific
information regarding deploying the BDE with database
applications created in Delphi.
you may distribute the BDE files with your application
using an INPRISE-certified Redistributable Install program
such as InstallShield Express or another compliant install
program. You may redistribute only those BDE files selected
by the INPRISE-certified installation program.
See the BDE Links deployment notes in the file
BDEDEPLOY.TXT (found in the BDE directory) for specific
information regarding deploying the BDE with database
applications created in Delphi.