我得到了tChromium在Delphi 7下工作,它應該都是一樣的。
有我拿着從DOM
首先閱讀元素,我從這個項目的包裝步驟: https://code.google.com/p/delphichromiumembedded/downloads/detail?name=dcef-r306.7z&can=2&q=
還有一個XE2,也不會花費太多將其轉換成XE3,如果您需要幫助,我會很樂意幫助請求。
然後宣佈開始,並在tchromium
procedure TMainForm.crmLoadStart(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame); begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then FLoading := True;
end;
結束,
procedure TMainForm.crmLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then begin
FLoading := False;
// see if loaded
while(httpStatusCode <> 200) do begin
Application.ProcessMessages;
Sleep(50);
end;
browser.GetMainFrame.VisitDomProc(DomProc);
end;
end;
聲明一個名爲domproc像這樣的過程:
procedure DomProc(const Doc: ICefDomDocument);
var
Node: ICefDomNode;
begin
url := Doc.BaseUrl;
if(url='www.goodwebsite.com') then // check if it is the right page and not add
Node := Doc.Body.Document.GetElementById('idofwhatyouarelookingfor');
Node.SetElementAttribute('value','Hello world :D');
end;
這是最可靠的方法我到目前爲止,已經發現,你需要確保頁面裝載得很好,並且你得到了正確的dom t框架。
希望它可以幫助你,請務必查看上面的下載鏈接中的示例代碼,這幫助我了很多。
玩得開心編碼,Delphi岩石!
取決於您使用的Chromium版本。據我所知,在幾個版本中,DOM迭代根本不起作用。 – TLama 2013-03-24 14:56:00
最新版本,從官方網站下載 – LuckyD 2013-03-24 15:07:44
如果我們在討論['CEF1'](https://code.google.com/p/delphichromiumembedded/)封裝(因爲也有''CEF3'](https ://code.google.com/p/dcef3/)wrapper),那麼恐怕你只是碰到了這個問題(同樣的問題似乎發生在CEF3中)(https://code.google。 com/p/dcef3/issues/detail?id = 10)。你可以嘗試一些舊版本的'CEF1'(不能告訴你哪個是最新的,哪裏工作的),並檢查自該版本以來發生了什麼變化。 – TLama 2013-03-24 15:18:58