http://blog.csdn.net/xtfnpgy/article/details/15809635javascript
網頁代碼:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆</OPTION> <OPTION value=30>每頁顯示30筆</OPTION> <OPTION value=60>每頁顯示60筆</OPTION></SELECT>php
1.webbrowser執行網頁中的JS函數html
若是要執行TouchRefresh(1)函數:java
webbrowser1.oleobject.document.parentwindow.ExecScript(‘TouchRefresh(1)’,'Javascript');程序員
webbrowser執行本身的JS函數:
wb1.OleObject.document.parentwindow.ExecScript('alert(''自定義函數');','javascript');web
方法2:編程
wb1.Navigate('javascript:alert(''執行成功!'');');瀏覽器
2.webbrowser選擇下拉列表服務器
var網絡
ole : olevariant
begin
ole := webbrowser1.oleobject.document.GetElementByID('fy');
ole.value := 60; //下拉框用value,複選框和多選框用checked:='true'
ole.onchange; //調用onchange事件
end;
3.webbrowser按照Form提交(針對提交按鈕無id和name的狀況)
網頁代碼:
<FORM id=loginForm onsubmit="return validate_form()" method=post action=/pass/serviceLoginAuth2><INPUT id=passToken type=hidden name=passToken>
<INPUT style="DISPLAY: none" id=user class="input_kuang item errortip" name=user>
<INPUT style="DISPLAY: none" id=pwd class="input_kuang item errortip" value="" type=password name=pwd>
<DIV class="sub_login flt_l"><INPUT class="no_bg" value=登入 type=submit></DIV>
提交方法:
webbrowser1.OleObject.document.forms.item('loginForm').submit;
4.webbrowser去掉滾動條
在download事件中:
webbrowser1.oleobject.Document.body.Scroll := 'no';
webbrowser1.oleobject.Document.documentElement.style.overflow := 'hidden';
webbrowser控制滾動條滾動:
webbrowser1.OleObject.document.parentwindow.scrollby(0,100);//第一個參數橫向,第二個豎向 scrollby滾動多少
webbrowser1.OleObject.document.parentwindow.scrollto(0,1000);// scrollto滾動到某個位置
5.webbrowser屏蔽鼠標右鍵 TEmbeddedWB設置DisabledPopupMenuItems屬性
webbrowser1.DisabledPopupMenuItems := [rcmDefault,rcmImage,rcmControl,rcmTable,rcmSelText,rcmAnchor,rcmUnKnown,rcmImageArt,rcmImgDynSrc,rcmDebug,rcmAll]
6.webbrowser屏蔽網頁圖片 TEmbeddedWB設置DownloadImages屬性
webbrowser1.DownloadOptions := [];
7.webbrowser按照元素的屬性獲取元素
function GetDocLinkByHref(doc : IHTMLDocument2;str_url:string):IHTMLAnchorElement;
var
i : Integer;
label_iDispatch : iDispatch;
label_element : IHTMLAnchorElement; //引用mshtml
begin
Result := nil;
doc := webbrowser1.document as Ihtmldocument2;
if not Assigned(doc) then
Exit;
for i:=0 to doc.links.length-1 do
begin
label_iDispatch := doc.links.item(i,0);
label_element := doc.links.item(I,0) as IHTMLAnchorElement;
if (AnsiPos(str_url,(doc.links.item(I,0) as IHTMLElement).getAttribute('tag',0))>0)
then
begin
Result := label_element;
Break;
end;
end;
end;
8.webbrowser TEmbededwb屏蔽彈窗並捕獲彈窗信息 //在 TEmbededwb的OnShowMessage事件中處理
procedure TForm1.wb1NavigateComplete2(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
VAR
str_url : string;
begin
Wb1.OleObject.document.parentWindow.execScript('window.alert=null;','JavaScript');
Wb1.OleObject.document.parentWindow.execScript('window.open=null;','JavaScript');
Wb1.OleObject.document.parentWindow.execScript('window.close=null;','JavaScript');
Wb1.OleObject.document.parentWindow.execScript('window.showModalDialog=null;','JavaScript');
Wb1.OleObject.document.parentwindow.execscript('function confirm() {return true;}','Javascript');
end;
function TForm1.webbrowser1ShowMessage(Sender: TObject; HWND: Cardinal; lpstrText, lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar;
dwHelpContext: Integer; var plResult: Integer): HRESULT;
begin
plResult := IDOK; //屏蔽alert\open\close等彈窗
Result := S_OK; //屏蔽confirm確認框,並點擊確認
mmo1.Lines.Add(lpstrText); //lpstrText即爲捕獲到的彈窗內容
end;
//強制Webbroser使用IE8內核 SetWBCoreIE8(8000);
procedure SetWBCoreIE8(i_value:Integer);
var
str_exeName : string;
reg : TRegistry;
begin
try
str_exeName := RightFromStr(Application.ExeName,'\',False);
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl', False) then
begin
if not reg.KeyExists('FEATURE_BROWSER_EMULATION') then
reg.CreateKey('FEATURE_BROWSER_EMULATION');
end;
reg.CloseKey;
if reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False) then
begin
reg.WriteInteger(str_exeName,i_value);
// if not reg.ValueExists(str_exeName) then
// begin
// reg.WriteInteger(str_exeName,i_value);
// end;
end;
reg.CloseKey;
reg.Free;
except
end;
end;
最後奉獻之前收集的關於WB的文章連接:
支持原創,轉載請註明出處!