您可以使用JavaScript来检测用户是否已关闭浏览器选项卡吗?关闭浏览器?或者已经离开了浏览器?

时间:2015-02-09 11:16:44

标签: javascript jquery browser web

让你进入图片:

  • 用户在移动设备上正在查看浏览器(即iPhone上的Safari)
  • 他们可以在模式框中看到密码字段以创建密码
  • 如果用户要关闭模态框并退出浏览器,我想向他们发送一封电子邮件,提示他们创建密码。

我最初的想法是必须有某种java脚本事件才能做到这一点吗?

因此,您可以使用JavaScript检测以下用户操作: - 关闭标签 - 关闭浏览器 - 离开他们的浏览器

4 个答案:

答案 0 :(得分:3)

也在寻找问题,但你不会满足需求。

我刚刚找到了解决此问题的方法:“您是否可以使用JavaScript来检测用户是否已关闭浏览器标签?关闭浏览器?还是已离开浏览器?”

<html>
<head>
<title>Detecting browser close</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
var validNavigation = false;

function wireUpEvents() {
var dont_confirm_leave = 0; //set dont_confirm_leave to 1 when you want the  user to be able to leave withou confirmation
var leave_message = 'ServerThemes.Net Recommend BEST WEB HOSTING at new tab  window. Good things will come to you'
function goodbye(e) {
if (!validNavigation) {
window.open("http://serverthemes.net/best-web-hosting-services","_blank");
    return leave_message;

}
}
window.onbeforeunload=goodbye;

// Attach the event keypress to exclude the F5 refresh
$(document).bind('keypress', function(e) {
if (e.keyCode == 116){
  validNavigation = true;
}
});

// Attach the event click for all links in the page
$("a").bind("click", function() {
validNavigation = true;
 });
 // Attach the event submit for all forms in the page
 $("form").bind("submit", function() {
 validNavigation = true;
});

// Attach the event click for all inputs in the page
$("input[type=submit]").bind("click", function() {
validNavigation = true;
});

}

// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
  wireUpEvents();
});
</script>
</head>
<body>
<p>
Check which action detects browser window close:
<ol>
<li>Click this <a href="#" onclick="location.reload();return false">Refresh</a> link or the browser's Refresh button</li>
<li>Navigate away from this page through a <a href="http://serverthemes.net/">link</a></li>
<li>Type another URL in the address bar</li>
<li>Click Back or Forward button</li>
<li>Click the Close (X) button in the top-rightmost corner of the browser</li>
<li>Click the IE icon in the top-leftmost corner and choose Close. Or simply double-click the icon</li>
 <li>Press Alt+F4 key</li>
</ol>
 </p>
     <p>In IE, the last 3 actions are correctly detected by the <a href="#" onclick="alert(doUnload);return false">javascript code</a> inside this page as browser close.</p>
    </body>
    </html>

答案 1 :(得分:2)

如果您的用户关闭了一个标签,您可以使用onunload事件检测它,但当她关闭浏览器时,您的javascript引擎也会中止,因此您无法再在客户端运行任何类型的程序。 / p> 但是,您可以在服务器上检测到它。例如,如果您准备了websocket连接,您可能会检测到客户退出的时间,然后执行所需的操作。

过程如下:在进入页面时,设置与服务器的自动websocket连接。输入后,如果需要,可以阅读电子邮件(您也可以通过websocket事件将其发送到服务器),最后,当&#34;断开&#34;事件触发,将电子邮件发送到该地址。

如果您想以这种方式继续,您可能需要查看Socket.IO webpage,这对我来说是实现此过程的最简单方法之一。

答案 2 :(得分:1)

简短回答不是真的,不是。很长的答案是有一个onunload事件,但你可以用它做的就是问用户他们是否确定要离开(参见@ EvanKnowles的评论),但你不能给它添加任何复杂的逻辑。

最好的方法是使用某种会话计时器,它会在您网站上次看到它们的N分钟后发送电子邮件。

答案 3 :(得分:0)

给你的文件: http://www.openjs.com/scripts/events/keyboard_shortcuts/ shortcut.add("Ctrl+Shift+X",function() { alert("Hi there!"); });

下载:http://www.openjs.com/scripts/events/keyboard_shortcuts/shortcut.js