我想从.html文件中运行.hta文件,而浏览器要求下载它。它应该在浏览器的html页面中的iframe中运行。我正在使用的代码就是这个 -
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<iframe src="app.hta">
</body>
</html>
问题是浏览器要求下载hta文件,但它希望它能自动运行。
hta文件代码是这个 -
<html>
<head>
<title>Application Executer</title>
<HTA:APPLICATION ID="oMyApp"
APPLICATIONNAME="Application Executer"
BORDER="no"
CAPTION="no"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
SCROLL="no"
WINDOWSTATE="normal">
<script type="text/javascript" language="javascript">
function RunFile() {
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("c:/app.exe", 1, false);
}
</script>
</head>
<body>
<input type="button" value="Run Notepad" onclick="RunFile();"/>
</body>
</html>
答案 0 :(得分:2)
实际上,即使主应用是HTA,您也无法在iframe
内打开HTA。 HTA有自己的操作系统窗口,就像浏览器或任何.exe一样。
您可以做的是将脚本放到常规的html文件中。根据IE的安全设置,它会执行代码,或要求用户允许执行或抛出错误。
另请注意,ActiveX
仅适用于Internet Explorer。就像Dark Falcon所说的那样,允许ActiveX
从网上执行将是一个巨大的安全风险。因此,不建议在公共网站上尝试做这些事情。
如果这是一个Intranet应用程序,您可以将主应用程序更改为HTA。然后,您可以将Run Notepad
按钮(和脚本)添加到主应用,或添加到设置了iframe
的{{1}}。此外,受信任的站点(html)可以在没有提示或错误的情况下运行application=yes
。
答案 1 :(得分:0)
HTA无法在浏览器下运行。它们在名为mshta
的特殊主机进程下运行。允许在浏览器框架中打开HTA会产生问题,因为HTA具有比普通网页更高的权限。