我想检测用户何时离开浏览器,但我需要检查某些条件,下面的脚本会跳过if(false)并始终提示请求,无论返回true还是false。 在提示之前如何让它检查状态? $(document).ready(function () { $(window).bind(‘beforeunload’, function () { if (false) return “Are you sure? Your changes will be lost!”; else return false; // or true doesn’t matter }); });
我有一些function,我需要在使用浏览器的“X”按钮关闭浏览器之前进行ajax调用以更新数据库值。 我在相关文件的标题中使用了以下代码: $(document).ready(function() { window.onbeforeunload = function(){ $.ajax(‘index.php/ajax/myfunction?a=4’); } }); 关闭浏览器时,该function有效,但不执行ajax调用。 解决方案是什么?
我试图在用户关闭浏览器/选项卡时显示确认消息,而不是在单击页面上的任何链接时显示确认消息。 我在窗口关闭时显示消息的第一部分工作得很好,但问题是当用户点击页面上的任何链接时也会显示消息/警报。 我从某个地方获得了代码来防止这种行为,但是当点击任何链接时,警报弹出。 这是代码: $(document).ready(function() { $(window).bind(‘beforeunload’, function(e){ $(“#lead-gen-modal”).dialog(“open”); // This line only appears in alert boxes for IE return “Wait\! Don\’t Go\! We have a special offer for you\. Stay on this page to receive big savings\!”; }); $(“a”).click(function() { window.onbeforeunload=null; }); });
我在浏览器/窗口关闭之前使用以下js来显示弹出窗口。 但它似乎没有起作用。 $(window).bind(‘beforeunload’, function(e) { $(‘#beforeclose’).click(); }); 我试图展示的弹出窗口是prettyPopin 。 并且#beforeclose是我试图在窗口卸载之前绑定click事件的锚的id。 我注意到本机js弹出窗口工作,但jQuery弹出窗口不起作用。 有没有办法实现我想要的? 请向我解释或转介给我各自的链接,因为我不是js的专家。 提前致谢。
每当用户关闭浏览器窗口时,我需要清除一些会话变量。 窗口可以通过两种方式关闭: 通过按下窗口关闭按钮的正常方式 按下窗口内的自定义按钮 我正在使用jQuery,所以监听器是: // clear some session variables $(window).bind(‘beforeunload’, function() { makeAjaxCall(some, params); }); 通过调用最终执行的函数关闭窗口: window.close(); 问题是关闭窗口的第二种方法只触发FF中的beforeunload事件。 在Chrome中,第二种方式仅适用于Safari,它根本不起作用。 有什么想法吗? 解决方案 (到目前为止): // clear search filter whenever the user closes the window $(window).on(‘beforeunload’, function() { // most browsers except Safari doSomeMagic(param); return; }).on(‘unload’, function() { // Chrome doSomeMagic(param); }); 这适用于大多数浏览器:使用window.close()和/或本机浏览器按钮关闭窗口时,IE8 +,Chrome,FF 如果窗口由本机浏览器窗口关闭,它也适用于Safari。 根本不适用于Opera。
我有一段代码,我想在页面关闭时被解雇(基本上,向服务器发送’断开’的消息。执行应该足够快,我不必取消并重新启动事件。此外,它的工作原理完全在Chrome,Firefox和Safari中,但在关闭选项卡时不在IE9中。如果我导航到IE9中的另一个页面,我的事件会触发。如果我关闭选项卡,它不会。我尝试以下来绑定我的代码: jQuery(window).bind(“beforeunload”, function() { DoSomeWork(); }); 我也尝试用$替换jQuery: $(window).bind(“beforeunload”, function() { DoSomeWork(); }); 仍可在Chrome中使用,但在IE中无效。 有什么建议? 我使用jquery 1.9.1分钟(压缩生产版本)。
我正在使用javascript window.onbeforeunload函数,以便在用户尝试离开页面而不提交数据时向用户显示警报。 这个function正常。 问题出现在IE(仅限)中,即使点击内部链接,window.onbeforeunload事件也会触发 Edit 这是一个内部链接,用于编辑网格行而不进行任何重定向或ajax调用。 只是简单地编辑html DOM结构中新创建的行。 这是我在页面中使用的javascript代码: var is_clicked = false; $(document).ready(function(){ $(‘#get-a-quote-step2’).submit(function(){ is_clicked = true; return validate(‘get-a-quote-step2’); }); $(‘#skip_step, form input’).click(function(){is_clicked = true;}); }); window.onbeforeunload = function() { if(!is_clicked) return false; } is_clicked = false; 一切都在firefox上工作正常,但在IE上却产生了问题。 我正在使用IE 8测试这些东西,但我猜问题是IE的alll版本。 在上面的代码中,问题是如果我点击内部链接它将is_clicked标志设置为true然后如果我按下刷新按钮,我就可以重新加载页面而不询问用户他离开了他将丢失所有未保存的数据。 我在想是否还有esp; 在JQuery中,以便我们知道某些特定链接是否未被点击,如isNotClicked()? 或者,如果我的问题有任何其他解决方案,我们非常欢迎。
我知道用自定义的beforeunload替换beforeunload对话框是beforeunload ,如果我们需要为用户设置自定义消息,我们必须在beforeunload处理程序中返回一个字符串: {Custom message here set by returning a string in our beforeunload handler} Are you sure you want to leave this page? [Leave this page] [Stay on this page] 那么,在浏览器显示实际的beforeunload对话框之前如何显示自定义模式对话框(可能是jQuery)呢? 我目前的代码使用Fancybox: window.onbeforeunload = function() { $.fancybox({ ‘type’:’iframe’, ‘href’:’/PopupOnExit.php’ }); return “Special offer! Stay on this page for more details.”; }; 但是,这首先显示浏览器的对话框,只有在单击“停留”或“离开”按钮后,浏览器才会显示我的modal dialog。 有没有办法让我的modal dialog显示在浏览器的对话框之前?
我需要在窗口卸载之前调用jquery ajax()函数。 在我的情况下它是一个POST,我不关心返回结果,我只想要更新数据库。 所以答案似乎是将函数绑定到unload事件,即使用jquery unload()函数,该函数进行ajax调用。 另外,我知道你应该在调用中添加同步参数。 换句话说,将async:false添加到jquery ajax()调用。 但是,我已经尝试了所有这些,它在IE8上不起作用! 我已经多次测试了它,它根本不适用于IE8。 适用于Firefox和Chrome。 更奇怪的是,在我关闭整个IE8应用程序之后,似乎然后呼叫通过了! 它被缓存了吗? 所以其他人建议在使用jquery bind()之前绑定ajax。 但是,对于这是否适用于所有浏览器似乎有一些混合的答案。 我还没有尝试过beforeunload,因为这似乎是“黑客”的做法。 但是,如果它有效,那么只要它确实有效,我就不在乎。
我正在尝试在用户离开页面时执行post查询。 我正在使用的代码是 window.onbeforeunload = function(){ var used = $(‘#identifier’).val(); $.post(‘conversation.php?leave=true’,{ud:used}); } 我在这里做什么有什么不对吗? 我在FF错误控制台中得到的结果只是说没有定义其他非相关函数/变量(因为它们正在卸载)。 我需要解决的任何提示或指示?