РЕШЕНО: VB .NET SHDocVw.InternetExplorer отсоединяется от окна javascript window.open(URL)
Я заметил проблему, и мне было интересно, нашел ли кто-нибудь обходной путь для этого класса. SHDocVw.InternetExplorer
.
Public objIE As InternetExplorer
Public Sub OpenBrowser(url As String)
If url = "" Then Exit Sub
Dim i = 0
If objIE Is Nothing Then
Debug.Print("nothing")
objIE = New InternetExplorer
End If
With objIE
.Top = 0
.Left = 0
.Width = 800
.Height = 800
.Visible = false
.Navigate(url)
Do Until Not .Busy And .ReadyState = 4
Sleep(100)
Loop
End With
End Sub
Public Sub ReplyMail()
OpenBrowser("https://url.com")
Dim source = objIE.Document.Body.InnerHTML
objIE.Navigate("javascript:submitAction_win0(document.win0,'CONTENT')")
End Sub
Код отлично работает для любых других вещей, которые мне нравятся, нажимая на ссылку на кнопках JavaScript и т. Д. Только с помощью этой функции JavaScript submitAction она обновляет фактическую страницу, на которой я нахожусь (url.com), и поскольку страница обновляется и Функция JavaScript:
onload=
window.open('https//anotherurl.com')
Он открывает новый URL-адрес на новой вкладке с помощью window.open, что делает объект IE снова видимым, хотя я установил для него значение false, и нет возможности управлять новой вкладкой каждый раз, когда я использую .navigate
он просто перемещается по первой вкладке и продолжает открывать новую вкладку столько раз, сколько я вызываю sub ReplyMail. Это немного раздражает, потому что даже если я выйду из браузера с помощью sub:
Public Sub CloseIE()
If objIE Is Nothing Then
Exit Sub
End If
objIE.Quit() 'Closes the web browser
objIE = Nothing
End Sub
Все, что он делает, это закрывает первую вкладку, потому что я подозреваю, что другие вкладки, вызываемые sub ReplyMail, отсоединяются от объекта, потому что браузер запускает новую вкладку, а не сам код? (Не знаю, как точно объяснить)
Моя основная цель - продолжать использовать ShDocVW, так как я уже закончил свой код, и переписывание займет недели:)
Заключение: я пытаюсь открыть URL-адрес в браузере, чтобы очистить HTML-код, но во время события onload на странице открывается другая вкладка, которой я не могу управлять из моего объекта vb ie.:) Другим способом заблокировать браузер, открыв функция JavaScript window.open
Решено: я просто отменил все всплывающие окна нового окна, если в них был включен заголовок, а затем я получил URL-адрес для серфинга через навигацию:)
Public contentURL As String
Public content = False
Private Sub ObjIE_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, dwFlags As UInteger, bstrUrlContext As String, bstrUrl As String) Handles ObjIE.NewWindow3
If InStr(bstrUrl, "getcontent") > 0 Then
Cancel = True
contentURL = bstrUrl
content = True
End If
End Sub
Заранее спасибо!