2016-08-26 2 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; 
Смежные вопросы