IE & Links
8 отговора
180 прегледа
IE & Links
Искам да взема всички линкове от HTML файл ввъ отворен прозорец на Internet Explorer. Някой има ли идея какви интерфейси да използвам?
Go on, prove me wrong. Destroy the fabric of the universe. See if I care.
Go on, prove me wrong. Destroy the fabric of the universe. See if I care.
Re: IE & Links
Ами имам...
1. Импортираш MSHTML_TLB - много вероятно е да имаш проблем с опцията Component Wrapper
2. Разглеждаш следния код
1. Импортираш MSHTML_TLB - много вероятно е да имаш проблем с опцията Component Wrapper
2. Разглеждаш следния код
procedure TForm1.WebBrowserDocumentComplete(Sender: TObject;
var pDisp: OleVariant; var URL: OleVariant);
var
Doc: IHTMLDocument2;
ElementCollection: IHTMLElementCollection;
HtmlElement: IHTMLElement;
I: Integer;
AnchorString: string;
begin
lstbxLinks.Clear;
// We will process the document at this time. Trying to do
// so earlier won't work because it hasn't fully loaded.
Doc := FInternetExplorer.Document as IHTMLDocument2;
if Doc = nil then
raise Exception.Create('Couldn''t convert the ' +
'FInternetExplorer.Document to an IHTMLDocument2');
// First, grab all the elements on the web page
ElementCollection := Doc.all;
for I := 0 to ElementCollection.length - 1 do
begin
// Get the current element
HtmlElement := ElementCollection.item(I, '') as IHTMLElement;
// Next, check to see if it is a link (tagName will be A).
// You could easily find other tags (such as TABLE, FONT, etc.)
if HTMLElement.tagName = 'A' then
begin
// Now grab the innerText for this particular link. The innerText is
// all text that is inside of the particular tag. For example,
// this would give us "Go To Borland" from the HTML:
// <a href="[линк]"><b>Go To Borland</b></a>.
// If you want "<b>Go To Borland</b>" use innerHTML.
AnchorString := HtmlElement.innerText;
if AnchorString = '' then
AnchorString := '(Empty Name)';
// We know that the element is an IHTMLAnchorElement since the tagName
// is 'A'.
AnchorString := AnchorString + ' - ' +
(HtmlElement as IHTMLAnchorElement).href;
lstbxLinks.Items.Add(AnchorString);
end;
end;
end;
чети и дишай по-леко
Re: IE & Links
Tova na Pechkata nqma da bachka sus frames. Nali i az skoro razrabotvah kod za gepvane na selectiran text ot IE, ta obrabotih i tazi situaciq.
BTW Za uses men mi stiga:
Windows, Messages, SysUtils, SHDocVw, ComObj, ActiveX, MSHTML, StrUtils;
i toq TLB ne mi trqbvashe da go pravq.
Rince, shte ti pratq na meila moq source, che e malko dulag. Zaedno s koda na Pecheniq bi trqbvalo da se spravish
by Waz Gaa
[email protected]
BTW Za uses men mi stiga:
Windows, Messages, SysUtils, SHDocVw, ComObj, ActiveX, MSHTML, StrUtils;
i toq TLB ne mi trqbvashe da go pravq.
Rince, shte ti pratq na meila moq source, che e malko dulag. Zaedno s koda na Pecheniq bi trqbvalo da se spravish
by Waz Gaa
[email protected]
Re: IE & Links
MSHTML е точно TLB-то на Internet Explorer. Прав си че примера не включва фреймове, но и те са колекция както всеки друг обект в браузера.
Примера го сложих с Copy&Paste /мързеше ме/, иначе обхождането на безфреймова страница е точно 4 дефиниции на променливи и 5 реда код. Струва ми се че и обхождането по фреймове ще увеличи кода с не повече от две дефиниции и 4-5 реда код. Интересно ми е какво се разбира под малко дълъг сорс, за мен и самия пример е големичък, но е по-добра илюстрация на идеята от моя код.
Подробностите по импорта и uses не ги писах, като имах предвид квалификацията на питащия ;-)
чети и дишай по-леко
Примера го сложих с Copy&Paste /мързеше ме/, иначе обхождането на безфреймова страница е точно 4 дефиниции на променливи и 5 реда код. Струва ми се че и обхождането по фреймове ще увеличи кода с не повече от две дефиниции и 4-5 реда код. Интересно ми е какво се разбира под малко дълъг сорс, за мен и самия пример е големичък, но е по-добра илюстрация на идеята от моя код.
Подробностите по импорта и uses не ги писах, като имах предвид квалификацията на питащия ;-)
чети и дишай по-леко
Re: IE & Links
Rabotata beshe dali trqbva da se pravi TLB ili moje da polzva napravo MSHTML, koeto si go ima nqkude iz Delphi direktoriite Na men TLB ne mi trqbvashe...
BTW Kakto e tvoito, s elemnti, shte obikoli li vsi4ki frame-ove?
by Waz Gaa
[email protected]
BTW Kakto e tvoito, s elemnti, shte obikoli li vsi4ki frame-ove?
by Waz Gaa
[email protected]
Re: IE & Links
MSHTML е TLB-то на Microsoft HTML Object Library.
Нормално е разположена във файла c:\windows\system\mshtml.tlb и може да се издърпа с Project/Import Type Library. Друг е въпроса че може да я имаш вече компилирана в някой пакет на нещо дето я ползва.
Смисъла на MSHTML е да предостави обектния модел на Internet Explorer. В него всички елементи - тагове, фреймове, скриптове и т.н. са представени с колекции, които е лесно да се обходят /показанот в примера е само за елементите <a href=... >. Съответно е доста лесно да извлечеш цялата информация, която те интересува. Пак така са предоставени и събития за прихващане и всички други дивотии на IE-то.
Извличания от сорта /през фреймове и т.н./ е правил всеки писал сериозно JavaScript за IE. Пак ползвайки същия обектен модел. Разбира се, на потребител от класата на Rincewind е достатъчно съвсем малко инфо, за да си свърши работата, затова /а и щото от жегата ме мързи страхотно/ не си направих труд да пиша примери...
В крайна сметка когато се пише за IE е добре да се познава обектния му модел, и после дали със скрипт, OLE или MSHTML_TLB да пипаш каквото ти душа иска.
чети и дишай по-леко
Нормално е разположена във файла c:\windows\system\mshtml.tlb и може да се издърпа с Project/Import Type Library. Друг е въпроса че може да я имаш вече компилирана в някой пакет на нещо дето я ползва.
Смисъла на MSHTML е да предостави обектния модел на Internet Explorer. В него всички елементи - тагове, фреймове, скриптове и т.н. са представени с колекции, които е лесно да се обходят /показанот в примера е само за елементите <a href=... >. Съответно е доста лесно да извлечеш цялата информация, която те интересува. Пак така са предоставени и събития за прихващане и всички други дивотии на IE-то.
Извличания от сорта /през фреймове и т.н./ е правил всеки писал сериозно JavaScript за IE. Пак ползвайки същия обектен модел. Разбира се, на потребител от класата на Rincewind е достатъчно съвсем малко инфо, за да си свърши работата, затова /а и щото от жегата ме мързи страхотно/ не си направих труд да пиша примери...
В крайна сметка когато се пише за IE е добре да се познава обектния му модел, и после дали със скрипт, OLE или MSHTML_TLB да пипаш каквото ти душа иска.
чети и дишай по-леко
Re: IE & Links
MSHTML е TLB-то на Microsoft HTML Object Library.
Нормално е разположена във файла c:\windows\system\mshtml.tlb и може да се издърпа с Project/Import Type Library. Друг е въпроса че може да я имаш вече компилирана в някой пакет на нещо дето я ползва.
Смисъла на MSHTML е да предостави обектния модел на Internet Explorer. В него всички елементи - тагове, фреймове, скриптове и т.н. са представени с колекции, които е лесно да се обходят /показанот в примера е само за елементите <a href=... >. Съответно е доста лесно да извлечеш цялата информация, която те интересува. Пак така са предоставени и събития за прихващане и всички други дивотии на IE-то.
Извличания от сорта /през фреймове и т.н./ е правил всеки писал сериозно JavaScript за IE. Пак ползвайки същия обектен модел. Разбира се, на потребител от класата на Rincewind е достатъчно съвсем малко инфо, за да си свърши работата, затова /а и щото от жегата ме мързи страхотно/ не си направих труд да пиша примери...
В крайна сметка когато се пише за IE е добре да се познава обектния му модел, и после дали със скрипт, OLE или MSHTML_TLB да пипаш каквото ти душа иска.
чети и дишай по-леко
Нормално е разположена във файла c:\windows\system\mshtml.tlb и може да се издърпа с Project/Import Type Library. Друг е въпроса че може да я имаш вече компилирана в някой пакет на нещо дето я ползва.
Смисъла на MSHTML е да предостави обектния модел на Internet Explorer. В него всички елементи - тагове, фреймове, скриптове и т.н. са представени с колекции, които е лесно да се обходят /показанот в примера е само за елементите <a href=... >. Съответно е доста лесно да извлечеш цялата информация, която те интересува. Пак така са предоставени и събития за прихващане и всички други дивотии на IE-то.
Извличания от сорта /през фреймове и т.н./ е правил всеки писал сериозно JavaScript за IE. Пак ползвайки същия обектен модел. Разбира се, на потребител от класата на Rincewind е достатъчно съвсем малко инфо, за да си свърши работата, затова /а и щото от жегата ме мързи страхотно/ не си направих труд да пиша примери...
В крайна сметка когато се пише за IE е добре да се познава обектния му модел, и после дали със скрипт, OLE или MSHTML_TLB да пипаш каквото ти душа иска.
чети и дишай по-леко
Re: IE & Links
10x guys
Sega ako imashe nqkoi da mi dade koda v C#... :)
Mai i sam shte probvam da se spravq...
Go on, prove me wrong. Destroy the fabric of the universe. See if I care.
Sega ako imashe nqkoi da mi dade koda v C#... :)
Mai i sam shte probvam da se spravq...
Go on, prove me wrong. Destroy the fabric of the universe. See if I care.