咨询:VBS HTA应用中模态对话框无法显示视频的原因
问题:HTA模态对话框中视频无法正常显示
在VBS HTA应用中,通过主程序调用showModalDialog打开视频播放HTA作为模态对话框时,窗口仅显示标题栏,视频内容空白;但直接双击打开该视频播放HTA文件时,视频可正常播放。
相关代码
视频播放HTA(VideoPlayer.hta)
<html> <meta http-equiv="x-ua-compatible" content="ie=9" /> <head> <title>Video Player</title> <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="Video Player" BORDER="Dialog" CAPTION="Yes" SCROLL="No" SHOWINTASKBAR="Yes" SINGLEINSTANCE="Yes" SYSMENU="Yes"> </head> <body> <video width="320" height="240" controls> <source src="C:\Users\20200791\Desktop\Repos\Audio-Go\movie.mp4"> </video> </body> </html>
主HTA触发函数
Sub VideoButton_OnClick If Not document.getElementById("mp3Selector").value = "" Then Set FSO = CreateObject("Scripting.FileSystemObject") Pause FSO.CopyFile document.getElementById("mp3Selector").value, "C:\Users\20200791\Desktop\Repos\Audio-Go\movie.mp4" Window.showModalDialog "hta\VideoPlayer.hta", "", "dialogHeight: 228px; dialogWidth: 300px;" FSO.DeleteFile "C:\Users\20200791\Desktop\Repos\Audio-Go\movie.mp4" End If End Sub
问题原因及解决方法
1. 模态窗口尺寸不足
你设置的模态窗口尺寸(dialogHeight:228px; dialogWidth:300px;)小于视频控件的尺寸(320x240),导致视频控件无法完整显示,呈现为空白窗口。
解决方法:调整模态窗口的尺寸参数,确保大于等于视频控件的尺寸,例如:
Window.showModalDialog "hta\VideoPlayer.hta", "", "dialogHeight: 280px; dialogWidth: 340px;"
2. showModalDialog的兼容性限制
showModalDialog在IE/HTA环境中对HTML5特性的支持存在局限性,模态窗口的渲染环境可能强制使用更低的文档模式,导致<video>标签无法正常工作。
解决方法:改用window.open替代showModalDialog,同时通过脚本控制窗口实现模态效果(阻止主窗口交互):
Sub VideoButton_OnClick If Not document.getElementById("mp3Selector").value = "" Then Set FSO = CreateObject("Scripting.FileSystemObject") Pause FSO.CopyFile document.getElementById("mp3Selector").value, "C:\Users\20200791\Desktop\Repos\Audio-Go\movie.mp4" ' 打开新窗口并设置为模态 Set videoWindow = window.open("hta\VideoPlayer.hta", "VideoPlayer", "height=280,width=340,modal=yes,alwaysOnTop=yes") ' 等待窗口关闭后再删除文件 Do While videoWindow Is Nothing Or videoWindow.closed = False WScript.Sleep 100 Loop FSO.DeleteFile "C:\Users\20200791\Desktop\Repos\Audio-Go\movie.mp4" End If End Sub
3. 文档模式一致性问题
确保主HTA也设置了相同的IE兼容模式,避免子窗口继承主窗口的旧文档模式。在主HTA的<html>标签下添加:
<meta http-equiv="x-ua-compatible" content="ie=9" />
内容的提问来源于stack exchange,提问作者Arnaud Girard
相关产品推荐
相关产品推荐

