【问题标题】:Equivalent to accept attribute in HTA等价于接受 HTA 中的属性
【发布时间】:2014-12-30 11:39:55
【问题描述】:

是否存在与在 HTA(或在 IE7 中,因为 HTA 与 IE7 类似)中工作的 accept 属性(在 <input type="file"> 中)的等效项?

【问题讨论】:

  • 其实HTA can also work like IE11。只需使用 HTML5 DTD 和 x-ua compatible meta 标记值 ie=edge。这当然需要你安装 IE11。
  • 完美。您可以将其发布为答案。
  • 好吧,新答案只是链接答案的副本。请注意,从 IE10 开始,HTA 已被弃用,因此在 IE=10 或更高版本模式下运行时,HTA 窗口属性存在一些限制。
  • 我注意到...它不支持框架或<hta:application> 标签。我只是在一个简单的 HTA 上测试后才回答,只有一个 <title> 和一个 <input type="file">
  • 不幸的是,情况就是这样。在我上面评论中链接的答案下方的 cmets 中有一些关于此的讨论。 framesetframes 在 HTML5 中不受支持,因此它们不能在 IE9+ 模式下使用。

标签: html hta


【解决方案1】:

您可以同时拥有<hta:application> 标签提供的功能并使用IE10 和IE11 功能,例如<input type="file"> 中的accept 属性,方法是将您的HTA 分成两部分,如下例所示。

注意:SingleInstance 属性必须用代码复制。

IE11-Mode-Test.hta

<meta http-equiv="X-UA-Compatible" content="IE=9">
<HTA:Application
  ID=oHTA
  Navigable=yes
  Application=yes
  Icon="C:\Program Files\Internet Explorer\iexplore.exe"
  Caption=yes
  Sysmenu=yes
  Scroll=no
  SingleInstance=yes
>
<script language="vbscript">
MyName = "IE11-Mode-Test"
MyNameHTA = MyName & ".hta"
MyNameHTM = MyName & ".htm"

Window.ResizeTo 100,100
Window.MoveTo -2000,-2000
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")

Function ProcessCount(Exe,File)
  ProcessCount = 0
  Set oProcesses = oWMI.ExecQuery("Select * From Win32_Process")
  For Each oProcess In oProcesses
    If InStr(oProcess.CommandLine,"\" & Exe) Then
      If InStr(oProcess.CommandLine,"\" & File) Then
        ProcessCount = ProcessCount + 1
      End If
    End If
  Next
End Function

If LCase(oHTA.singleInstance)="yes" And ProcessCount("mshta.exe",MyNameHTA)>1 Then Window.Close
location.href = MyNameHTM
</script>

IE11-Mode-Test.htm

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=11">
<script>
x = 800; y = 620;
window.resizeTo(x,y);
window.moveTo ((screen.availWidth - x)/2, (screen.availHeight - y)/2)
document.title = "IE11-Mode-Test";
function PlayVideo(){v1.src = f1.value;}
</script>
<style>
.fc {display:flex; justify-content:center; align-items:center; height:50px; border:3px solid}
#f1 {width:100%}
</style>
</head>
<body>
<div class="fc">
  <p>HTA in IE11 Mode</p>
</div><br>
File input with Accept attribute:<br>
<input type="file" id="f1" accept="video/*" oninput="PlayVideo()"><br><br>
<video width="100%" controls>
  <source id="v1" type="video/mp4">
</video>
</body>
</html>

【讨论】:

  • 我不明白这是做什么的?它只是在屏幕外打开一个窗口并阻止打开第二个窗口吗?将第二个文件重命名为 .hta 并运行播放器似乎更有趣,因为它单独识别accept
  • @Zano 不,它不是这样做的。如果您使用 HTA 扩展名重命名第二个文件并直接运行它,accept 将起作用,但您将无法在 HTA:Application 下设置任何选项,因为该部分在 IE 9 之后不受支持。通过将脚本拆分为两个文件,如图所示,您可以保留 HTA:Application 选项,并且可以使用仅在 IE 10 和 IE 11 中可用的功能。
猜你喜欢
  • 1970-01-01
  • 2015-02-21
  • 2015-05-15
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
  • 2016-05-23
  • 2011-10-29
  • 1970-01-01
相关资源
最近更新 更多