1、基本操作
1.1、激活
var doc,url:Olevariant ; begin url:='about:blank' ;//或者一個有實際意義的url WebBrowser1.Navigate2(url);//這樣就激活了! end;
1.2、寫HTML代碼
var doc:Olevariant ; s:string; begin doc:=WebBrowser1.Document; doc.clear;//清楚緣由內容,以便寫新內容 doc.write('<html>'); //其它代碼 doc.write('</html>'); doc.close;//這樣就生效了! end;
1.3、獲得HTML文本
var doc:Olevariant ; s:string; begin doc:=WebBrowser1.Document; s:=doc.documentElement.outerHTML;//s里就是HTML文本了 //處理s就行了 end;
2、中級操作
2.1、獲得其中HTML元素的值
var doc:olevariant; s:string; begin doc:=WebBrowser1.Document; s:=doc.all.btn.value; end;
2.2、改寫其中HTML元素的值
var doc:olevariant; begin doc:=WebBrowser1.Document; doc.all.btn.value:='123123'; end;
3、高級操作
3.1、觸發其中HTML元素的事件
var doc:olevariant; begin doc:=WebBrowser1.Document; doc.all.btn.onclick; end;
3.2、讓其中的元素執行webbrowser之外的delphi代碼
本來,這有很復雜的解決辦法,但那部分屬於ATL的知識比較難掌握,因此繞了一下:
讓那些需要執行delphi的HTML元素,調用一個函數叫做triggerExEvent,參數是HTML元素的名稱,然后是若干參數。
triggerExEvent是javascript函數,有不確定個參數,但第一個肯定是表示元素的名稱。 triggerExEvent將參數組成字符串,然后前面冠以"#OnTriggerExEvent:",作為url,然后導航。
在webbrowser的onNavigator2事件里,判斷url中是否包含"#OnTriggerExEvent:",如果包含怎作如下處理:
a、cancel這次導航;b、將"#OnTriggerExEvent:"之后的信息截取,作為參數傳遞給webbrowser的新增一個事件OnTriggerExEvent事件,其參數有兩個:1、控件名稱;2、一個字符串參數。
這樣,用戶可以在OnTriggerExEvent事件里處理HTML的點擊等事件了
例如,我為webbrowser派生新類,叫做webbrowserEx,它有一個事件叫做OnTriggerExEvent
有個js文件包含這樣的函數:
function triggerExEvent(cmpnt_id,event_nm,optionstr) {url='#triggerExEvent:id='; url=url+cmpnt_id+';eventnm='+event_nm; if(optionstr) url=url+';params=optionstr'; location=url;}
在HTML文本里可以這樣寫:
<input type="button" name="Submit" value="按鈕" onClick="triggerExEvent('Submit','click',null);">
這樣,點擊網頁里的按鈕時,會觸發delphi寫的代碼,這些代碼根據傳遞過來的參數,再進行調用其它合適的事件,也可以讓webbrowserEx自動尋找合適的事件來觸發,只有尋找不到時才去找JS的方法。