РЕШЕНО: 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

Заранее спасибо!

0 ответов

Другие вопросы по тегам