在我的Web应用程序中,我使用自定义URL协议启动桌面应用程序。例如:“fakeproto://”将在桌面上启动“fakeproto.exe”。如果您不知道我在说什么,请阅读:Registering an Application to a URL Protocol
我需要一种方法来确保在尝试启动之前在用户的PC上安装了“fakeproto.exe”。这有点像黑客,但我让它适用于所有主流浏览器。 IE提出了最多的问题并且具有独特的实现。
在Javascript中,我首先尝试加载自定义网址协议:
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');
}
但这仅在禁用任何弹出窗口阻止程序时有效。我想避免使用这个解决方案。
答案 0 :(得分:0)
是的,IE9会阻止onunload处理程序中的导航。