Опитвам се да използвам контролата WebBrowser, за да стартирам нов формуляр за изскачащи прозорци, вместо да се отваря в IE. Опитах се да използвам AxWebBrowser вместо това, за да получа изскачащи прозорци, който работи със събитие NewWindow3 и просто правя e.ppDisp = AxWebBrowser.Application
, но има много ограничения, които идват с AxWebBrowser. Затова вместо това се опитвам да разширя нормалния уеббраузър, за да включва събитието NewWindow3 като AxWebBrowser, но срещам проблеми. С e.ppDisp = AxWebBrowser.Application
получавам грешки: „InvalidVariant беше открит“, последвано от „Посоченият OLE вариант е невалиден“, ако продължа.
Забележка: Това е първият ми път, когато удължавам клас, така че може да прекалявам с нещо просто. Ако се опитам просто да отида до новия URL адрес в новия прозорец, получавам грешки в java скрипта от сайта.
Актуализирах кодовата база на коментари. Премахнах класа ExtendedWebBrowser за много по-малка и по-хубава версия. Ето новия код:
От основната форма и много подобна форма BrowserPopup -
Protected Overrides Sub OnLoad(ByVal e As EventArgs)
MyBase.OnLoad(e)
nativeBrowser = DirectCast(ExtendedWebBrowser1.ActiveXInstance, SHDocVw.WebBrowser)
AddHandler nativeBrowser.NewWindow3, AddressOf nativeBrowser_NewWindow3
AddHandler nativeBrowser.WindowClosing, AddressOf nativeBrowser_WindowClosing
End Sub
Private Sub nativeBrowser_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwflags As UInteger, ByVal bStrUrlContext As String, ByVal bstrUrl As String)
Dim popup = New BrowserPopup()
popup.Show(Me)
popup.browserPop.DocumentText = bStrUrlContext
ppDisp = popup.browserPop.ActiveXInstance
End Sub
Private Sub nativeBrowser_WindowClosing(ByVal IsChildWindow As Boolean, ByRef Cancel As Boolean)
MsgBox("working?") '<<<Doesn't Trigger>>>
End Sub
Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs)
MyBase.OnFormClosing(e)
End Sub
Освен това, ако помага, ето скрипта от страницата, който би трябвало да може да затвори изскачащия формуляр, но изглежда вместо това деактивира уеббраузъра.
<table isListBtn="false" cellpadding="0" enabled="true" class="buttonBorderBlue"
cellspacing="0" border="0" onClick="if (typeof(workpaneMediator_toolbar)!='undefined')
workpaneMediator_toolbar.onSelect('CANCEL_ACTION', this)"
actionType="CLOSE_WINDOW_TYPE" id="workpaneMediator_toolbar_CANCEL_ACTIONWrapper"
nowrap><tr><td class="buttonBlueTD">
WebBrowser
от JavaScript е различен въпрос. Разглеждали ли сте събитието WindowClosing на основнатаWebBrowser
ActiveX контрола? - person noseratio   schedule 30.10.2013WindowClosing
изглежда също не се хваща. Ще актуализирам кода в оригиналната си публикация, за да отразя последните промени. - person Congree   schedule 30.10.2013