假设我有一个按钮,用window.open()打开一个弹出窗口: Open window 我希望在此窗口关闭时捕获。 我使用以下代码: $(‘#my-button’).on(‘click’, function() { popup = window.open(‘http://www.google.com’, ‘my_popup’, “width=800,height=600,scrollbars=no,resizable=yes,status=yes,toolbar=no,location=no,menubar=no”); $(popup.document).ready(function() { console.log(‘ready!’); $(popup).on(‘unload’, function() { console.log(‘unloaded!’); } ); }) }); 现在,我注意到打开的窗口会短暂加载“about:blank”,然后加载请求的URL。 那时,onunload事件被触发。 其他post说这是正常行为,但我似乎没有得到第二次onunload事件(至少使用铬)。 任何人有一个建议的解决方法? 见小提琴: http : //jsfiddle.net/periklis/NJz6w/ 一如既往,提前谢谢
我需要在窗口卸载之前调用jquery ajax()函数。 在我的情况下它是一个POST,我不关心返回结果,我只想要更新数据库。 所以答案似乎是将函数绑定到unload事件,即使用jquery unload()函数,该函数进行ajax调用。 另外,我知道你应该在调用中添加同步参数。 换句话说,将async:false添加到jquery ajax()调用。 但是,我已经尝试了所有这些,它在IE8上不起作用! 我已经多次测试了它,它根本不适用于IE8。 适用于Firefox和Chrome。 更奇怪的是,在我关闭整个IE8应用程序之后,似乎然后呼叫通过了! 它被缓存了吗? 所以其他人建议在使用jquery bind()之前绑定ajax。 但是,对于这是否适用于所有浏览器似乎有一些混合的答案。 我还没有尝试过beforeunload,因为这似乎是“黑客”的做法。 但是,如果它有效,那么只要它确实有效,我就不在乎。
我想在用户关闭浏览器窗口时通知服务器。 我尝试了所有的 $(window).bind(“beforeunload”, function() { $.get(“${contextPath}/notify?direction=logout”); }); 和 $(window).unload( function() { $.get(“${contextPath}/notify?direction=logout”); }); 和 $(window).unload(function() { $.ajax({ url: “${contextPath}/notify?direction=logout” }); }); 但是,尽管事实上在手册中说它可能应该这样做,但它们都不能很好地工作。 在Firefox中,我只在窗口关闭时没有通知,但在页面刷新时有一些通知。 在Chrome中我没有。 我试图在Firebug或Chrome开发者工具中跟踪这个脚本,发现如果跟踪它就会开始工作! 所以我认为它不能正常工作,因为它没有时间在窗口关闭或导航之前发送请求。 这是真的? 如何完成我的任务? 解 这工作: $(window).bind(“beforeunload”, function() { $.ajax({ async: false, url: ‘notify’ }); } );
是否可以捕获用户点击的网页上的链接? 不是在谈论他们是否在地址栏中手动输入了url,或者他们是否点击了后退按钮 – 而是当前页面上的现有链接或菜单项。 这是一个商业网页,其标准页眉和页脚包含指向公司网站上其他页面的链接。 他们有一个复杂的订单表单,尝试保存和恢复表单的状态是不切实际的。 如果在填写订单的过程中,客户需要访问网站上的另一个页面 – 查看产品等。理想情况下,我可以选择在另一个浏览器窗口或选项卡中打开链接而不是离开页面,以便用户不会丢失他们已下订单的工作。 我知道我可以使用一组不同的页眉和页脚来编写,以便在另一个窗口/选项卡中打开它们的链接,但是为了简化维护和更新,我试图最小化所使用的变体数量。 此外,用户可能想要放弃订单,如果在尝试这样做而另一个窗口打开时可能会感到困惑。 我正在使用JQuery和Javascript。
我正在为我的表单构建一个故障保护,它将警告用户,如果他们离开页面,他们的表单数据将丢失(类似于gmail所做的)。 window.onbeforeunload = function () { if (formIsDirty) { return “You have unsaved data on this form. Don’t leave!”; } } 上面的函数在firefox中运行得很好,但在IE中它由任何href链接触发,即使是链接到javascript而不是其他页面的链接。 例如…. click 我想知道是否有办法绕过这个,因为我不希望用户认为他们只是点击它上面的按钮就离开了页面。 我没有选择重写所有各种链接,因为它们是内置的和众多的。 有任何想法吗?
我无法调用a4j:commandButton点击窗口卸载。 我的jsf代码在这里 首先是我有窗口卸载方法的javascript ,我在该function中调用了按钮单击。 window.onbeforeunload = function() { document.getElementById(‘pForm:closeTime’).click(); } 第二,我在主体中隐藏了a4j:commandButton <a4j:commandButton id="closeTime" value="" action="#{controller.update}" oncomplete="javascript:window.close()" style="visibility:hidden;display:none" 当窗口关闭时,此控制器未被调用。 帮帮我!!!
有没有办法捕获window.onbeforeunload确认对话框的结果,如Stack Overflow中的下一个(当离开’Ask Question’页面而不发布问题时会发生这种情况)? 这就是它在Chrome中的显示方式,我相信它在其他浏览器中略有不同,但你总是有某种forms的是/否按钮。 据推测,如果事件被触发后他们仍然在违规页面上,他们选择留下来,你可以通过观察js序列来解决这个问题。 但是我想知道如何确定他们是否点击了“离开此页面” ? 我已经实现了如下: // concept taken from SO implementation function setConfirmUnload(showMessage, message) { window.onbeforeunload = showMessage ? (message ? message : “this is a default message”) : null; } // pseudo code listen to changes on inputs if any inputs fire a change event call setConfirmUnload(true, ‘My warning message’) 请注意我在我的网站中使用jQuery。 […]
所以,我在jQuery Mobile应用程序中有一些方便的function,让用户知道他/她是否正在离开页面,因为这会触发注销。 以简化forms: $(window).bind(‘beforeunload’, function() { return “Navigating away from this page will log you off. Are you sure you want to continue?”; }); $(window).unload(function() { logoff(); }); 这在我的笔记本电脑上的Safari和Chrome中都很好用。 但是,它似乎不适用于iPhone模拟器。 iOS中包含的移动浏览器(我知道它是Safari,但可能是不同的版本)根本不支持beforeunload事件吗? 这对于移动设备(特别是Android)来说是否正确?