HTML 在 VBScript 中作为弹出窗口
HTML within VBScript as a popup
我查看了 Use HTML tags in VBScript and How can I call a vbscript function from html?,但看不出我的代码有什么问题。有人可以查看并告诉我为什么当我单击“确定”按钮时 window 没有关闭吗?我评论了一些我试过但没有用的台词。
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> </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
ClickedOk()
函数不是新 window 的 HTML 源代码的一部分。您的脚本启动了一个新的 Internet Explorer 进程,但该进程中的 HTML(或脚本)代码不能使用来自另一个进程(在本例中为脚本进程)的代码:
yourscript.vbs --> ClickedOk()
| ^
| |
| X
v |
iexplore.exe --> <input onclick='VBScript:ClickedOk()'>
您需要 IPC 方法来与其他进程通信,但出于安全考虑,浏览器通常会限制此类访问。
因此,当您单击 'OK' 时,它会查找 ClickedOK
函数,但找不到。这样就不行了。
要使其正常工作,请尝试以下操作:
objIE.document.body.innerHTML = "<b>" & strDX & " is a covered diagnosis code.</b><p> </p>" & _
"<center><input type='submit' value='OK' onclick='self.close();'></center>" & _
"<input type='hidden' id='OK' name='OK' value='0'>"
我查看了 Use HTML tags in VBScript and How can I call a vbscript function from html?,但看不出我的代码有什么问题。有人可以查看并告诉我为什么当我单击“确定”按钮时 window 没有关闭吗?我评论了一些我试过但没有用的台词。
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> </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
ClickedOk()
函数不是新 window 的 HTML 源代码的一部分。您的脚本启动了一个新的 Internet Explorer 进程,但该进程中的 HTML(或脚本)代码不能使用来自另一个进程(在本例中为脚本进程)的代码:
yourscript.vbs --> ClickedOk()
| ^
| |
| X
v |
iexplore.exe --> <input onclick='VBScript:ClickedOk()'>
您需要 IPC 方法来与其他进程通信,但出于安全考虑,浏览器通常会限制此类访问。
因此,当您单击 'OK' 时,它会查找 ClickedOK
函数,但找不到。这样就不行了。
要使其正常工作,请尝试以下操作:
objIE.document.body.innerHTML = "<b>" & strDX & " is a covered diagnosis code.</b><p> </p>" & _
"<center><input type='submit' value='OK' onclick='self.close();'></center>" & _
"<input type='hidden' id='OK' name='OK' value='0'>"