相关疑难解决方法(0)

如何知道用户是否点击了Javascript onbeforeunload对话框上的取消?

当有人试图离开特定页面而没有保存他们的工作时,我弹出一个对话框.我使用Javascript的onbeforeunload事件,效果很好.

现在,当用户在出现的对话框上单击"取消"时,我想运行一些Javascript代码(说他们不想离开页面).

这可能吗?我也在使用jQuery,所以可能有像我之前可以绑定的beforeunloadcancel这样的事件吗?

更新:如果用户选择取消,则实际上是将用户保存并指向不同的网页

javascript jquery onbeforeunload javascript-events

32
推荐指数
2
解决办法
3万
查看次数

在卸载之前将AJAX发送到服务器

所以据说从Firefox> 4开始,绑定窗口jQuery对象beforeunload不再起作用了.

我想做的是提交AJAX帖子来删除我的服务器的memcache数据.

当我刷新唯一的打开选项卡时,我可以看到beforeunload使用以下代码在firefox和chrome中调用该事件,如console.log消息"firefox/NON-firefox delete"所示.问题是我从未看到console.log消息"memcache delete",表明我的服务器从未看到过$.ajax请求.

我意识到浏览器嗅探是不好的,并且if和else语句中包含的内容之间没有区别.我只是展示了我在Firefox中尝试失败的代码.

有人有主意吗?

$(window).bind('beforeunload', function(){ 
  if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
    console.log('firefox delete');
     memcacheDelete();
     return null;
  } 
  else {
    console.log('NON-firefox delete');
    memcacheDelete();
    return null;
  }
});

function memcacheDelete() {
   $.ajax({
      url: "/memcache/delete", 
      type: "post",
      data:{}, 
      success:function(){
          console.log('memcache deleted');
      }//success
  }); //ajax
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery cross-browser onbeforeunload

9
推荐指数
2
解决办法
2万
查看次数

如何在AngularJS中发送HTTP请求onbeforeunload?

我有一个简单的角度应用程序,有两个使用ngRoute加载的视图.当用户在视图之间导航以及用户离开页面时(刷新窗口,关闭选项卡或关闭浏览器),我需要在服务器上进行一些清理.

我的第一站就在这里:当用户离开页面时在angularjs中显示警报.它解决了用户在视图之间导航的第一种情况.我已经像这样处理了清理工作:

$scope.$on('$locationChangeStart', function (event) {
    var answer = confirm("Are you sure you want to leave this page?")
    if (answer) {
        api.unlock($scope.id); //api is a service that I wrote. It uses angular $http service to handle communications and works in all other cases.
    } else {
        event.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我无法处理用户离开页面的情况.按照上述答案和此Google网上论坛帖子:https://groups.google.com/forum/#!topic / angular/-PfujIEdeCY我试过这个:

window.onbeforeunload = function (event) {
    api.unlock($scope.id); //I don't necessarily need a confirmation dialogue, although that would be helpful. 
};
Run Code Online (Sandbox Code Playgroud)

但它没有用.然后我在这里读到: 如何在onbeforeunload上执行ajax函数? …

javascript onbeforeunload http-request angularjs

9
推荐指数
2
解决办法
1万
查看次数

Javascript 捕获用户活动

是否有现有的 js 库用于捕获浏览器端的用户活动?

IE。滚动、鼠标移动、鼠标点击等。我一直在谷歌搜索、stackoverflow 和 github 上搜索,但我不断收到付费分析程序的链接,但这些程序并不是我想要的。

我很想开始自己构建一些东西,但我想得越多,我就越难意识到它会变得更加困难,并且如果可用的话,我最好使用一些现有的库。

我在想什么。这是一个合适的方式吗?

  • 我假设最好的方法是监听 body 或 window 元素并捕获所有未禁用冒泡的所需事件。
  • 在发送/发布到服务器之前批量和缩小数据会很好。如在删除模式或频繁出现的数据中。如果用户滚动,我不需要所有滚动事件,只需要滚动开始、加速或停止的有意义的事件。
  • 可以每 X 个事件数或 X 秒发出批次。并发送最后一批window.onbeforeunload

我在这里这里发现了这两个问题。但不完全是我所追求的。

我希望能够配置事件聚合来询问有关用户交互的问题。诚然,我对谷歌分析已经过时了,也许我是错的,但乍一看,自定义事件跟踪似乎不符合要求。记录特定的个人操作不是我所追求的。

html javascript user-experience

1
推荐指数
1
解决办法
1万
查看次数