Как я могу изменить веб-страницу, используя (IE) DOM для добавления элементов формы и JavaScript? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть стороннее приложение (скомпилированное), которое может читать данные со страницы HTML.Это делается путем создания объекта Internet Explorer и загрузки пустой страницы (.navigate «about: blank»).Элемент формы добавляется на страницу через Document.Body.innerHTML.При выходе из HTML-страницы через Submit приложение считывает данные отправки через CreateObject ("WScript.Shell").Я хотел бы добавить JavaScript для объединения входных данных в строку.То есть ввод данных в текстовое поле 1 ввода и текстовое поле 2 ввода объединяются в текстовое поле 3 ИЛИ / И изменяют значения в текстовом поле 3 на основе флажков или переключателей.Я мог бы затем отправить эти значения обратно в приложение.Как я могу дополнительно изменить эту пустую веб-страницу, добавив в нее java-скрипт для выполнения вышеуказанного

Код "g_objIE.Document.Body.innerHTML =" работает просто отлично.Это очень простой и просто включает в себя элементы формы.Могу ли я просто добавить сценарий Java в innerHTML?Я так не думаю.Я попытался добавить очень простой код и получил ошибку «Ожидается конец утверждения».Я пытался вставить: "

" & _ "document.getElementById (" demo "). InnerHTML = 5 + 6;" & _

Это рабочий код.

' First step, set up the dialog (InternetExplorer)
Set g_objIE = CreateObject("InternetExplorer.Application")
g_objIE.Offline = True
g_objIE.navigate "about:blank"
g_objIE.document.focus()

' Wait for the navigation to the "blank" web page to complete
Do
    crt.Sleep 900
Loop While g_objIE.Busy

g_objIE.Document.body.Style.FontFamily = "Sans-Serif"

' Here's where we "create" the elements of our dialog box.  We basically
' throw HTML into the document, and IE loads it in real-time for us.
' 
' The hidden "ButtonHandler" input is used to tie IE and
' SecureCRT together such that SecureCRT can know when a
' button is pressed, etc.

g_objIE.Document.Body.innerHTML = _
  "<input type=radio name='LogMode' value='Append' AccessKey='A' checked>fpeth.3125 / Access" & _
    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;" & _
        "<input type=radio name='LogMode' value='Overwrite' Accesskey='w' >fpeth.3070 / Core<br>" & _
    "<hr>" & _
    "<b>Path/File</b>&nbsp;&nbsp;<input name='fName' size='60' maxlength='60' tabindex=1><br>" & _
    "<b>HOST</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name='tID' size='30' maxlength='30'><br>" & _

    "<hr>" & _
    "<button name='Cancel' AccessKey='C' onclick=document.all('ButtonHandler').value='Cancel';><u>C</u>ancel</button>" & _
    "<input name='ButtonHandler' type='hidden' value='Nothing Clicked Yet'>"

g_objIE.MenuBar = False
g_objIE.StatusBar = True
g_objIE.AddressBar = False
g_objIE.Toolbar = False
g_objIE.height = 270
g_objIE.width = 510   
g_objIE.document.Title = "TCP"
g_objIE.Visible = True

1 Ответ

0 голосов
/ 11 апреля 2019
  1. Вы захотите управлять заголовком HTML и типом документа, что означает, что вам нужно будет использовать document.write вместо body.innerHTML. Помимо работы скриптов, вы сможете контролировать заголовок HTML и типы документов.
  2. Чтобы упростить обслуживание, используйте переменную для хранения вашей строки HTML
Dim htmlString
htmlString = _
  "<!doctype html>" & _
  "<html>" & _
  "<head><title>tcp</title></head>" & _
  "<body>" & _
  "<input type=radio name='LogMode' value='Append' AccessKey='A' checked>fpeth.3125 / Access" & _
    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;" & _
        "<input type=radio name='LogMode' value='Overwrite' Accesskey='w' >fpeth.3070 / Core<br>" & _
    "<hr>" & _
    "<b>Path/File</b>&nbsp;&nbsp;<input name='fName' size='60' maxlength='60' tabindex=1><br>" & _
    "<b>HOST</b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name='tID' size='30' maxlength='30'><br>" & _
    "<hr>" & _
    "<button name='Cancel' AccessKey='C' onclick=document.all('ButtonHandler').value='Cancel';><u>C</u>ancel</button>" & _
    "<input name='ButtonHandler' type='hidden' value='Nothing Clicked Yet'>" & _
    "<div id=demo>goes here</div>" & _
    "<script> " & _
    "   document.getElementById('demo').innerHTML = (5 + 6).toString(); " & _
    "</script>" & _
    "</body>" & _
    "</html>"

g_objIE.document.write(htmlString)
...