日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

chromiumwebbrowser 使用_用Tchromium替换webbrowser

發(fā)布時(shí)間:2024/8/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 chromiumwebbrowser 使用_用Tchromium替换webbrowser 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用慣了EmbeddedWB,不想換,但是IE內(nèi)核一直存在內(nèi)存泄漏問(wèn)題,沒(méi)辦法,只有尋找替代品了。

要把用習(xí)慣的EmbeddedWB換成完全不一樣的TChromium,有點(diǎn)挑戰(zhàn),特別是在資料不多,英語(yǔ)沒(méi)過(guò)三級(jí)的情況下。未來(lái)趨勢(shì)是這樣,只有慢慢啃了。

首先,想到的是跨域,如果不能跨域,就沒(méi)辦法替代手上的成品。TChromium的跨域比想像中的簡(jiǎn)單,直接通過(guò)chrm.Browser.GetFrameNames(list);//list:tstringList;取得各個(gè)IFrame/Frame的名稱(chēng)(所謂名稱(chēng)不是指name屬性,只是一個(gè)標(biāo)識(shí),在有name時(shí),返回name,沒(méi)有name時(shí),ID 也行,都沒(méi)有時(shí),自動(dòng)生成一個(gè)唯一名稱(chēng)),如:

ff ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //這個(gè)是一個(gè)框架的ID

-->

-->

--> ? ? ? ? ? ? ? ? ? //后面三個(gè)是自動(dòng)生成的唯一名稱(chēng)

獲取指定Frame時(shí),通過(guò)chrm1.Browser.Frame['frame 的名稱(chēng)'],取得ICefFrame接口,后面的操作請(qǐng)隨意。

其次是填表,用過(guò)google瀏覽器的都知道,其填表功能實(shí)在強(qiáng)大,在webbrowser時(shí)代,一般都是獲取表單元素的各種接口,然后設(shè)置其value、checked等屬性,而在TChromium中,一切皆js,把想做的事都讓js去執(zhí)行吧,所以,用TChromium,js功力深厚的會(huì)輕松很多了。比如:

strTemp := 'document.forms[0].inmembername.value="User_Name";';

JavaExec(strTemp);

strTemp := 'document.forms[0].inpassword.value="Password";';

JavaExec(strTemp);

strTemp := 'document.forms[0].submit.click();';

chrm.browser.Frame['ff'].ExecuteJavaScript(str,'about:blank',0);; //想在哪一層frame執(zhí)行,就調(diào)用哪一層

更神奇的是,還可以通過(guò)以下方法加載屬于自己的jquery到瀏覽器中:

procedure TForm3.chrm1LoadEnd(Sender: TCustomChromium;

const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer;

out Result: TCefRetval);

var

str:string;

begin

str:='var oHead = document.getElementsByTagName(''HEAD'').item(0);'#13#10+

'var oScript = document.createElement( "script" );'#13#10+

'oScript.language = "javascript";'#13#10+

'oScript.type = "text/javascript";'#13#10+

'oScript.id = "sid";'#13#10+

'oScript.defer = true;'#13#10+

'oScript.src = "jquery.js";'#13#10+

'oHead.appendChild( oScript );'#13#10+

'alert("8")' ;

Frame.ExecuteJavaScript(str,'about:blank',0);

end;

直接連接本地的js!!!這段代碼最后寫(xiě)在LoadEnd中,每加載完成一個(gè)frame,就讓這個(gè)frame加載自己的jquery,如果在需要使用的時(shí)候再去加載jquery,jquery加載是需要時(shí)間的,可能會(huì)導(dǎo)致緊接著的js代碼不能生效。

最后,最后先到這里,下一次再說(shuō)關(guān)于彈出窗口、右鍵菜單、摸擬鼠標(biāo)點(diǎn)擊等內(nèi)容。

附:google論壇,delphi TChromium的問(wèn)題討論群組:http://groups.google.com/group/delphichromiumembedded

總結(jié)

以上是生活随笔為你收集整理的chromiumwebbrowser 使用_用Tchromium替换webbrowser的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。