2015.2.16 關於delphi web控件打開新網頁時彈出關閉頁面(js代碼)出錯的解決辦法研究,2015.2.16關閉頁面
參考網址1:http://www.csharpwin.com/csharpspace/2360.shtml
...參考網址2:http://www.oschina.net/question/234345_53939
網址1、2都是c語言中對於web控件的解決辦法,對於兩者我都只是借鑒了一下方法,最終都只是對網頁中js代碼中的widow.open和window.close進行處理。
大概有兩種方法:
一種對js代碼進行替換,換成web控件可執行不出錯的程序,
另一種是對於web控件在執行js代碼widow.open後,進行事件判定....
下面最終我采用第二種方法對其進行解決,但是我這裡只對window.open進行處理,並沒有對window.close進行處理,後面如果有機會會對程序進行進一步的完善....
最終參考網址:http://www.360doc.com/content/12/1109/11/7389824_246775000.shtml
解決辦法的程序:
procedure TForm1.WebBrowserNewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
WebBrowser.RegisterAsBrowser := true;//當前浏覽器為最高級別浏覽器
ppDisp := WebBrowser.ControlInterface;//新窗口對象允許web浏覽器操作
end;
程序說明:
首先選建立一個web控件,然後使用web控件的onnewwindow事件,再將web控件的RegisterAsBrowser 屬性設為真,使得事件的ppDisp參數等於web控件ControlInterface屬性。
onnewwindow事件是響應一個導航到新網址或一個腳本的window.open方法;
ppDisp為程序創建新窗口的對象;
RegisterAsBrowser屬性
設置該屬性為True時,當前使用的Web浏覽器組件成為最高級別浏覽器。
語法:
property RegisterAsBrowser: WordBool;
ControlInterface屬性
訪問WebBrowser組件接口,這個接口允許一個Automation控制器訪問Web浏覽器的屬性、方法和事件。
語法:
property ControlInterface: IWebBrowser2;
示例:
顯示WebBrowser1組件的名稱,代碼如下:
Showmessage(WebBrowser1.ControlInterface.Name);
qq:673890989歡迎遇到同樣問題的伙伴們交流