VBScript中的HTML作为弹出窗口

时间:2015-01-02 15:15:53

标签: html vbscript

我已查看Use HTML tags in VBScriptHow can I call a vbscript function from html?,但我无法查看代码有什么问题。有人可以查看并让我知道为什么,当我点击确定按钮时,窗口不会关闭?我评论了一些我尝试过但没有工作的线路。

Dim objIE, objShell
Dim strDX

Set objIE = CreateObject("InternetExplorer.Application")
Set objShell = CreateObject("WScript.Shell")

strDX = "AT-0125B"

objIE.Navigate "about:blank"

objIE.Document.Title = "Covered Diagnosis"
objIE.ToolBar = False
objIE.Resizable = False
objIE.StatusBar = False
objIE.Width = 350
objIE.Height = 200
'objIE.Scrollbars="no"

' Center the Window on the screen
With objIE.Document.ParentWindow.Screen
    objIE.Left = (.AvailWidth - objIE.Width ) \ 2
    objIE.Top = (.Availheight - objIE.Height) \ 2
End With

objIE.document.body.innerHTML = "<b>" & strDX & " is a covered diagnosis code.</b><p>&nbsp;</p>" & _
"<center><input type='submit' value='OK' onclick='VBScript:ClickedOk()'></center>" & _
"<input type='hidden' id='OK' name='OK' value='0'>"

objIE.Visible = True
'objShell.AppActivate "Covered Diagnosis"
'MsgBox objIE.Document.All.OK.Value
Function ClickedOk
'If objIE.Document.All.OK.Value = 1 Then
    'objIE.Document.All.OK.Value = 0
    'objShell.AppActivate "Covered Diagnosis"
    'objIE.Quit
    Window.Close()
'End If
End Function

1 个答案:

答案 0 :(得分:2)

ClickedOk()函数不是新窗口的HTML源代码的一部分。您的脚本启动了一个新的Internet Explorer进程,但该进程中的HTML(或脚本)代码无法使用其他进程的代码(在本例中为脚本进程):

yourscript.vbs --> ClickedOk()
     |                 ^
     |                 |
     |                 X
     v                 |
iexplore.exe   --> <input onclick='VBScript:ClickedOk()'>

您需要使用IPC方法与其他进程通信,但出于安全考虑,浏览器通常会限制此类访问。

因此,当您单击“确定”时,它会查找ClickedOK函数,但无法找到它。因此它不起作用。

要使其有效,请尝试以下方法:

objIE.document.body.innerHTML = "<b>" & strDX & " is a covered diagnosis code.</b><p>&nbsp;</p>" & _
"<center><input type='submit' value='OK' onclick='self.close();'></center>" & _
"<input type='hidden' id='OK' name='OK' value='0'>"