2016-08-26 42 views
-1

我有一個網站(我不能改變)有此腳本:如何在腳本上打開新的TWebBrowser?

<input type="checkbox" onclick="if (this.checked) openNew()"> 

function openNew() 
    { 
    window.open("/help?aide=77", "aproposde", "toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=no, copyhistory=no, width=300, height=250, left=500, top=300"); 
    } 

我嘗試使用TWebBrowser,但在新的窗口事件,總是打開一個空的瀏覽器:

procedure TForm1.wwwNewWindow2(ASender: TObject; var ppDisp: IDispatch; 
    var Cancel: WordBool); 
var NF: TForm1; 
begin 
    NF := TForm1.Create(Application); 
    NF.Visible := True; 
    NF.www.RegisterAsBrowser; 
    ppDisp := NF.www.DefaultInterface; 
end; 

任何想法如何解決這個問題?

+0

遺憾:剛貼上從另一個答案...和NF是這裏使用的唯一變量。所以沒關係5行代碼片段! – yarek

+0

當然。沒關係。直到下個月,當這五行代碼片段已經成長爲20或30行程序,然後六個月後,除了你以外的其他人必須進入並嘗試閱讀並修正某些內容。即使在五行代碼片段中,也沒有任何理由拖延代碼。 :-) –

回答

1

您可以使用NewWindow3事件如下

procedure TForm1.WebBrowser1NewWindow3(ASender: TObject; var ppDisp: IDispatch; 
    var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); 
var NF: TForm1; 
begin 
    NF := TForm1.Create(Application); 
    NF.Visible := True;  
    Cancel := True; 
    NF.www.Navigate(bstrUrl); 
end;