在我的 Web 应用程序中,我使用自定义 url 协议启动了一个桌面应用程序。例如:“fakeproto://”将在您的桌面上启动“fakeproto.exe”。如果您不知道我在说什么,请阅读以下内容:将应用程序注册到 URL 协议
不过,我需要一种方法来确保在尝试启动之前在用户的 PC 上安装了“fakeproto.exe”。这有点小技巧,但我让它适用于所有主要浏览器。IE 提出了最多的问题并且有一个独特的实现。
在 Javascript 中,我会首先尝试加载自定义 url 协议:
window.open('fakeproto://', '_self');
在此之前,我实际上定义了以下 onunload 事件处理程序:
window.onunload = function()
{
window.open('help.php', '_self');
}
因此,如果桌面无法识别自定义 url 协议,IE 将直接离开当前页面并转到“网页无法显示”。在这种情况下,onunload 事件处理程序将触发并打开 help.php。
这在 IE7 和 IE8 中效果很好,但是一旦我升级到 IE9,它就不再有效了?它转到“无法显示网页”而不是 help.php。
使用调试器,onunload 事件处理程序正在触发并且代码正在正确执行,但由于某种原因 window.open 调用不起作用???我也禁用了弹出窗口阻止程序,以确保不是那样。没运气。
有人有想法么?有人听说 IE9 对 window.open 更严格吗?有人知道原始问题的任何替代解决方案吗?
顺便说一句,如果我打开 help.php 到一个新窗口,我可以让它工作。
window.onunload = function()
{
window.open('help.php', '_blank');
}
但这仅在禁用任何弹出窗口阻止程序时才有效。我想避免使用这个解决方案。