VBA - проблема с добавлением созданного элемента HTML к элементу HEAD - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь добиться «моста» javascript между элементом управления UserForm Webbrowser и самой формой. Я чувствую, что я почти там, см. Ниже. Но я не могу добавить созданный скрипт в заголовок документа, загруженного в веб-браузер. Ошибка «Требуется объект» в строке «head.appendChild (scriptEl)». Я использовал msgbox для отображения head.innerHTML, который показывает весь HTML-код, а также scriptEl.innerHTML имеет полностью сформированный элемент script, поэтому не уверен, почему происходит эта ошибка.

Private Sub CommandButton2_Click()

Dim head As HTMLGenericElement
Dim scriptEl As HTMLScriptElement
Dim element As HTMLScriptElement



Set head = WebBrowser1.Document.GetElementsByTagName("head")(0)
Set scriptEl = WebBrowser1.Document.createElement("script")

    scriptEl.Text = "function sayHello() { alert('hello') }"
    head.appendChild (scriptEl)
    WebBrowser1.Document.InvokeScript ("sayHello")

End Sub

1 Ответ

0 голосов
/ 07 января 2019

Я бы предложил следующий код:

' Add references
' Microsoft Internet Controls
' Microsoft HTML Object Library

Private Sub UserForm_Initialize()

    With WebBrowser1
        .Navigate "about:blank"
        Do Until .ReadyState = READYSTATE_COMPLETE And Not .Busy: DoEvents: Loop
        .Document.parentWindow.execScript "function sayHello() { alert('hello') }"
    End With

End Sub

Private Sub CommandButton2_Click()

    WebBrowser1.Document.parentWindow.execScript "sayHello();"

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...