我有一个 HTML 应用程序,我想保留在所有窗口的顶部(也就是说,如果打开/切换到另一个窗口,我希望这个窗口覆盖它)。 JavaScript 解决方案在 Windows 7/IE9 模式下不起作用(不确定是什么阻碍了它,也无法更改),而 VBScript 解决方案似乎要么彻底失败,要么依赖外部组件。我也无法使用模式对话框,因为我需要将其置于所有其他窗口之上,而不仅仅是其父窗口之上。
并且不要将其标记为重复项https://stackoverflow.com/questions/24539339/how-to-open-a-hta-window-on-top-of-all-other-windows因为这个(不幸的是仍然没有答案)问题是指在其他窗口之上打开,而不是维护堆栈位置。
我尝试过的:
- 概述的三项建议here.
- JavaScript 解决方案here.
- 小VBScripthere.
- 上述每一项可能有十几个或更多个微妙的变化。
请记住,我无法下载额外的组件(没有 autoit 或 nircmd)。它应该全部集成到一个文件中,最好是 hta,但不是 zip。
我的解决方案
仅对 Teemu 的解决方案进行了非常轻微的修改,主要是为了可移植性(以防万一)。
<script language="javascript">
var locationstore = location.href
[...]
window.onload = function () {
var shell = new ActiveXObject('WScript.Shell'),
forceModal = function (e) {
shell.Run(locationstore, 1, 0);
};
top.addEventListener('blur', forceModal, false);
window.onbeforeunload = function () {
window.removeEventListener('blur', forceModal, false);
};
};
</script>
这是一个邪恶的片段。它并不完美,但也许您可以进一步开发它。
window.onload = function () {
var shell = new ActiveXObject('WScript.Shell'),
forceModal = function (e) {
shell.Run('absolute_path_to_hta', 1, 0);
};
top.addEventListener('blur', forceModal, false);
window.onbeforeunload = function () {
window.removeEventListener('blur', forceModal, false);
};
};
警告:测试此代码片段时,HTA 必须在单实例模式下运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)