目前我正在开发一个我正在使用预加载器图标的Web应用程序。我想要的是每次用户导航到另一个页面或刷新页面时,预加载器都会变得可见。到目前为止,我有以下解决方案:
window.onbeforeunload = function() { $("applicationdisabler").show(); };
对于Safari和Firefox,当用户点击链接或刷新页面时,它可以正常工作。但是在IE7中,div只有在用户点击链接时才会显示,而不是在用户刷新页面时显示。
用户可以通过点击F5(在Windows上)或浏览器提供的任何其他可能方式刷新页面。
当然,我一直在寻找一些工作。以下代码显示IE7中的警报,但div仍然不可见。
window.onbeforeunload = function() { $("applicationdisabler").show(); alert("come on!"); };
我的div的代码:
<div id="applicationdisabler"><img src="images/preloader.gif" /></div>
希望有人可以帮助我。
答案 0 :(得分:1)
你需要把#之前的#放在jQuery选择器上:
$("#applicationdisabler").show();
答案 1 :(得分:0)
为什么不使用只使用onLoad侦听器?虽然它会稍微慢一点,但应该更可靠。
实际上经过一些调查后我不确定修改DOM是否有意义,除非onBeforeUnload
处理程序首先返回false
- 即强制用户保持在同一页面上。
据我了解,在卸载页面之前,onBeforeUnload
事件被触发只是,所以如果你不返回false
,浏览器将卸载页面和DOM ,之后执行的任何JavaScript都是毫无意义的。
这并没有完全解释为什么JavaScript在<{strong> onBeforeUnload
函数中没有正确执行,但是从我看到的网站只使用window.alert
或{ {1}}对话框询问用户是否要离开网站,然后在用户决定留下时经常执行JavaScript。
因此,我猜测某些浏览器在触发此事件时可能不允许进行DOM操作 - 因为如果页面被卸载,那么任何完成的DOM操作都是毫无意义的。
所以:
window.prompt
方法中返回false
,然后显示您的预加载器(虽然这将停止导航到下一页)onBeforeUnload
事件来显示预加载器图片另请注意:Opera 9.5及以下版本不支持此事件(我不确定以后的版本)但GMail确实设法捕获Opera中的后退按钮。
IE7实现onLoad
事件可能与this security warning有关 - 微软可能会以某种方式对其进行修补,以防止您尝试执行的操作。我知道 IE6及以下版本出于安全原因,不允许onBeforeUnload
处理程序中的document.location=''
等命令。