我想捕获NewCivicAddressReport事件,这意味着我需要实现事件处理程序。任何人都可以解释为什么嵌入在html页面中的VBScript代码有效,但VBS文件没有?
这是html页面,其中可以在CivicFactory_NewCivicAddressReport()函数中处理NewCivicAddressReport事件。我想这是因为事件处理程序命名约定。如我错了请纠正我。
<!-- Civic address Location report factory object -->
<object id="CivicFactory"
classid="clsid:2A11F42C-3E81-4ad4-9CBE-45579D89671A"
type="application/x-oleobject">
</object>
<script language="vbscript">
Function CivicFactory_NewCivicAddressReport(report)
MsgBox "New civic address report!"
End Function
Sub OnLoadPage()
CivicFactory.ListenForReports(1000)
End Sub
Sub DisplayStatus(status)
MsgBox "status displayed"
End Sub
</script>
以下是无效的VBS文件 - 事件处理函数似乎永远不会被调用。
Dim CivicFactory
Set CivicFactory = WScript.CreateObject("LocationDisp.CivicAddressReportFactory")
Function CivicFactory_NewCivicAddressReport(report)
MsgBox "Location changed!"
keepSleeping=false
End Function
CivicFactory.ListenForReports(1000)
dim keepSleeping
keepSleeping=true
while keepSleeping
WScript.Sleep 200
wend
顺便说一句,任何人都可以告诉我创建对象的两种方式之间的区别:和WScript.CreateObject()?
提前致谢!
答案 0 :(得分:4)
WScript.CreateObject
的第二个参数是事件处理函数中使用的前缀。要使其工作,请将对CreateObject的调用更改为以下内容。
Set CivicFactory = _
WScript.CreateObject("LocationDisp.CivicAddressReportFactory", _
"CivicFactory_")
WScript.CreateObject和CreateObject之间的区别在于WScript.CreateObject支持事件。