已添加至2014年6月19日之后
感谢邦德。既然你有IE9,我感谢你的测试。希望如果那里的人有IE 10,他们也会测试它。没有任何意义,为什么在IE 11引擎下你只能运行兼容性ie8。
我创建了这个微小的,非常小的HTA,以便发布它,希望我能找到我所缺少的东西。
我的系统是带有IE 11的Win7 Pro 64位。
当我将元标记设置为:
<meta http-equiv="x-ua-compatible" content="ie=8">
HTA运行时非常敏锐。没问题。但是当我把它改为:
<meta http-equiv="x-ua-compatible" content="ie=9">
它没有那么好。
现在......我知道IE 11和VBScript之间有一个大家庭爆发。 VBscript被赶出了家门。 IE 11拒绝再与它通信。所以我可以理解为什么将它设置为content =&#34; ie = edge&#34;不行。但是为什么在将其设置为content =&#34; ie = 9&#34;?
时它不起作用<!DOCTYPE html>
<head>
<meta http-equiv="x-ua-compatible" content="ie=8">
<hta:application
applicationname="Hmmmmmm"
singleinstance="yes"
id="oHTA"
>
<title>Huh? What?</title>
<script language="VBScript">
Option Explicit
Dim objFSO,file
Sub Window_OnUnLoad
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set file=objFSO.OpenTextFile("c:\temp\submit.txt",2,True)
file.Write oHTA.document.getElementById("aa").value
file.Close
Set objFSO=Nothing
Set file=Nothing
End Sub
Sub Window_OnLoad
window.ResizeTo 240,130
End Sub
Function Form_OnSubmit()
window.Close
Form_OnSubmit=False
End Function
</script>
</head>
<body style="margin:30px;">
<form id="form" action="">
<input id="aa" type="text" size="10" value="test">
<input type="submit" value="Submit">
</form>
</body>
</html>
在元标记中设置ie8运行它工作正常...窗口弹出,调整大小,并在提交时写入文件... glory-be!
在弹出的元标记...窗口中设置为ie9运行它,忽略调整大小,忽略写入文件...就好像忽略了所有VBScript一样。
我错过了哪些信息?
答案 0 :(得分:6)
看起来IE的后续版本不支持其他答案中提到的HTA。
您的问题的一个解决方案是:使您的HTA文件可导航(HTA属性navigable="yes"
)并且不指定任何x-ua-compatible
元标记。在HTA文件中,导航到另一个具有x-ua-compatible
标记的文件。您导航的文件将具有HTA权限:
HTA文件:
<!doctype html>
<html lang="en">
<head>
<HTA:APPLICATION
navigable="yes" />
<script type="text/javascript">
<!--
document.location = 'htacontent.htm';
//-->
</script>
</head>
<body>
</body>
</html>
htacontent.htm
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
...
答案 1 :(得分:2)
我刚遇到同样的问题。
解决方案是将Window
放在小写字母中!它特别令人惊讶,因为通常VBScript不区分大小写!
所以声明Sub window_onLoad
而不是Sub Window_onLoad
,依此类推......最后你的脚本应该有效。 使用IE 11在Win7 Pro 64bit上进行测试,与您的一样。
IE反击!
答案 2 :(得分:0)
IE9以后的版本不能与HTA兼容。因此,如果您放置<meta http-equiv="x-ua-compatible" content="ie=9" />
标记,它将不支持HTA的内容,如<hta:application>
,VBScript或框架。我也遇到了这个问题,而我所做的就是尝试解决在早期版本的IE中无法解决的问题(例如,请参阅我对this question的回答)。您似乎没有使用在您发布的HTA中在早期版本的IE中不起作用的内容。如果你确切地告诉我你在IE7中使用哪些不起作用,我可能会给你一个解决方法。
答案 3 :(得分:0)
当我在HTA中同时使用js和vbs时,我的问题出现了。但在将我的案例与我的java“window.onload = function()”子句匹配后,一切都很好。 vb本身不区分大小写,但这可能是某些特定于mshta.exe的行为。
答案 4 :(得分:0)
我可以确认,(出于某些极端奇怪的原因); CED 和 TRSyntax 都已启用!
-谢谢大家! -我永远不会'猜'这个(我以为我很了解VBS ...)
仅提供一些简短的背景信息:我只是想让我的HTA更漂亮-它已经完全起作用了(这包括我的上载实际上写为Window.OnLoad()
并添加了{{1 }}到我的CSS上,但发现它不起作用-一些研究表明,我需要通过border-radius
这样做之后,我的整个HTA的VBS立即崩溃了–我尝试了不同的“内容模式”,并发现<meta http-equiv="x-ua-compatible" content="IE=Edge" />
允许VBS再次工作,但是“回到正题”,因为它忽略了{{ 1}}。
这是我终于到这里的时候-似乎添加meta使得对VBS的解释更加严格,这也许就是为什么我的OnLoad函数现在无效的原因……(尽管奇怪的是我原来的{{1 }}无效,但content="IE=8"
有效...)只需更改“窗口”上的 W 并保持与“打开”相同的 O 即可解决此问题,我认为“ OnLoad”也需要更改为“ onLoad”,但事实并非如此...
因此,总结一下(以防止我摇摇晃晃),我将分享我的工作设置:
文档顶部:border-radius
在制作基于HTML5的网页时,我将其作为“良好做法”使用,尽管meta此处实际上并不需要声明。
在Window.OnLoad()
中:window.OnLoad()
出于某些奇怪的原因,我在IE = 9或IE = 10时获得了最佳的总体效果。其他任何一个似乎都会引起问题,例如IE = 8破坏CSS,IE = 11或IE = Edge似乎破坏了VBS
在<!DOCTYPE html>
中:<head>
由于这个页面上的友善,我意识到“窗口”不能包含任何大写字母,尽管在点号后面;情况不再重要,例如:<meta http-equiv="x-ua-compatible" content="IE=10" />
仍然有效且有效,但是看起来很丑...
在<head><script>
中:
Sub window_OnLoad()
我刚刚添加了它是因为我开始胡扯,但是对某人可能有用-只是CSS规则在Tables,Table Headers&Cells上加了一个边框,然后,如果其他所有方法都正常工作边界将带有圆角:D
无论如何-非常感谢大家-非常感谢StackOverflow! -也许有一天我会注册并创建一个真实帐户:P