我有一个简单的VBScript,我在我的网页中使用它来旋转位于名为" media \ rotate"的文件夹中的图像。当我在Windows XP中运行它时,我的脚本运行正常,但如果我从Windows 7运行它,则它无效。我使用的是Windows 7 32位,而我的Windows XP是Service Pack 3.
我的脚本如下所示:
Dim gRotatorFiles, gFileCount, gFileIndex
gFileCount = 0
gFileIndex = 1
Sub LoadRotatorImages()
Dim oFileSystem, oFolder, oFile
Set gRotatorFiles = CreateObject("POSCommonObjects.POSCollection")
Set oFileSystem = CreateObject("Scripting.FileSystemObject")
If oFileSystem.FolderExists("C:\Program Files\Customer Display\media\rotate") Then
Set oFolder = oFileSystem.GetFolder("C:\Program Files\Customer Display\media\rotate")
If Not oFolder Is Nothing Then
If Not oFolder.Files Is Nothing Then
For Each oFile In oFolder.Files
gRotatorFiles.Add oFile.Path, oFile.Name
Next
End If
End If
End If
gFileCount = gRotatorFiles.Count
Set oFileSystem = Nothing
Set oFolder = Nothing
Set oFile = Nothing
End Sub
Sub RotateImages()
If gFileCount > 0 Then
gFileIndex = gFileIndex + 1
If gFileIndex >= gFileCount Then
gFileIndex = 1
End If
LoadCurrentImage()
window.setTimeout "RotateImages()", 10000
End If
End Sub
Sub LoadCurrentImage()
document.all("AdImage").Filters(0).Apply
document.all("AdImage").src = gRotatorFiles(CInt(gFileIndex))
document.all("AdImage").Filters(0).Play
End Sub
然后我在我的页面中将其称为:
<script language="vbscript" src="RotateImages.vbs"></script>
<script language="vbscript">
Sub Window_OnLoad()
RotateImages()
End Sub
</script>
在身体里:
<img id="AdImage" style="FILTER: prodig:DXImageTransform.Microsoft.GradientWipe(duration=2)" src="">
我想知道是否有人知道这些操作系统之间的不一致可能导致这些问题,或者它是否在我的代码中。
答案 0 :(得分:0)
根据可测试的东西进行故障排除:
' On Error Resume Next
' global var used by LoadRotatorImages() and RotateImages()
Dim gRotatorFiles
' preparation: init gRotatorFiles
Sub LoadRotatorImages()
' Set gRotatorFiles = CreateObject("POSCommonObjects.POSCollection")
Set gRotatorFiles = CreateObject("System.Collections.ArrayList")
' Set gRotatorFiles = CreateObject("System.Collection.ArrayList")
gRotatorFiles.Add "fi"
gRotatorFiles.Add "fa"
gRotatorFiles.Add "fo"
End Sub
' real work: using gRotatorFiles
Sub RotateImages()
For Each f In gRotatorFiles
WScript.Echo f
Next
End Sub
' Then I call it in my page like this:
' but I forgot to call LoadRotatorImages()
LoadRotatorImages()
RotateImages()
输出:
cscript 23547130.vbs
fi
fa
fo
第一次拍摄:
在您发布的代码中,您不会调用LoadRotatorImages()。如果添加此调用不修复您的问题,请禁用我在您的代码中怀疑的EVIL全局OERN并发布错误消息。
第二枪:
&#34;没有得到错误&#34;由一些人犯On Error Resume Next
或(也许;我不使用IE)引起的#34;保持对错误的保持沉默&#34; Internet选项中的设置。证据:如果在演示代码中激活OERN和错误的CreateObject,则根本没有输出。再次禁用OERN后,您会收到can't create object: 'System.Collection.ArrayList'
消息。
在您的生产代码中使用OERN是否取决于您,但如果没有OERN(或等效的IE设置),您不应该在没有测试代码的情况下提出问题。
如果代码运行既没有错误也没有输出,即使&#34;错误中断&#34;打开,尝试为重要的先决条件添加诊断。 E.g。
' On Error Resume Next
...
Set gRotatorFiles = CreateObject("System.Collections.ArrayList")
' Set gRotatorFiles = CreateObject("System.Collection.ArrayList")
WScript.Echo "****", TypeName(gRotatorFiles)
...
结果:
cscript 23547130.vbs
**** ArrayList
如果TypeName(gRotatorFiles)
没有提供合理的内容