angular 6 中的浏览器选项卡关闭事件仅适用于调试模式

帕万

我试图在我的 angular 6 应用程序中捕获浏览器事件,如 tab-close 和 refresh。它在调试模式下工作正常,但如果我关闭调试模式并运行应用程序,它就无法工作。下面是一段代码

registerDOMEvents() {
  window.addEventListener('unload', () => {
    if (this.validNavigation === 0) {
      this.endSession();
    }
  });
  document.addEventListener('keydown', (e) => {
    const key = e.which || e.keyCode;
    if (key === 116) {
      this.validNavigation = 1;
    }
  });
}
endSession() {
  this.logout();
  localStorage.clear();
}
ngOnInit() {
  this.registerDOMEvents();
}

对于这个问题,我可能有什么问题?

艾伯特·K

您需要使用beforeunload而不是unload. beforeunload更可靠并在文档及其资源即将卸载时unload触发,在页面已经卸载时触发。

endSession()必须是同步的,因为浏览器不会在调用任何回调时等待。据我所知,angular http 服务不提供同步 http 调用,但您可以通过以下方式自行完成XMLHttpRequest

window.addEventListener("beforeunload", function (event) {
  var client = new XMLHttpRequest();
  client.open("POST", "http://url/to/endsession", false); // third parameter indicates sync xhr
  client.setRequestHeader("Content-Type", "application/json");
  client.send('{userId: "42"}');
  console.log('done!!!'); // outputs when a response is received 
});

也看看这篇文章navigator.sendBeacon如果您的客户端的浏览器支持该功能,您可能可以使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理Angular中的浏览器选项卡关闭事件?仅关闭,不刷新

来自分类Dev

适用于模式弹出和选项卡的最佳Angular扩展/插件

来自分类Dev

选项卡组件内的表单构建器无法在 Angular 6 中工作

来自分类Dev

在几个不同的浏览器选项卡中的Angular和TypeScript / javascript单例

来自分类Dev

每当浏览器选项卡/窗口关闭时,Angular 应用程序就会变得不可用

来自分类Dev

Visual Studio 代码调试不适用于 Angular 6 CLI

来自分类Dev

Django中的Jsonresponse可在浏览器中工作,但不适用于PostMan或Angular

来自分类Dev

Angular 6 cookie 在 Angular 6 中过期或更改事件

来自分类Dev

如何在 Angular 中监听浏览器的关闭事件?

来自分类Dev

Contenteditable指令不适用于Angular UI Bootstrap选项卡

来自分类Dev

引导选项卡不适用于AngularJS / Angular-Form-Builder

来自分类Dev

Angular 6 和微调器

来自分类Dev

在Angular 6中应用DomSanitizationService

来自分类Dev

在 Angular 6 中停止 addEventListener

来自分类Dev

Angular6 中的模态

来自分类Dev

ngFor Angular 6 中的 LINQ

来自分类Dev

在Angular 6中使用延迟加载时,路由不适用于其他路由

来自分类Dev

Angular 6:防止浏览器工具提示在“innerHtml”中显示 HTML 标签

来自分类Dev

console.log() 未在 angular 6 项目的任何浏览器中显示

来自分类Dev

Angular 不适用于 Safari 浏览器,但在其他浏览器上运行良好

来自分类Dev

选择器仅适用于android 6

来自分类Dev

rxjs 6 管道在 Angular 6 中不起作用

来自分类Dev

从 Angular 6 中的对象中删除值

来自分类Dev

Angular 6 fxflex 不适用于 ngif div(如果显示 div,则未应用 fxflex)

来自分类Dev

快速虚拟路径前缀不适用于 angular 6 应用程序

来自分类Dev

angular 6 共享模块不适用于其他模块

来自分类Dev

Angular 6- 分页不适用于数据表

来自分类Dev

在CSV文件Angular 6中显示图形

来自分类Dev

Angular 6中Instascan库面临的问题

Related 相关文章

  1. 1

    如何处理Angular中的浏览器选项卡关闭事件?仅关闭,不刷新

  2. 2

    适用于模式弹出和选项卡的最佳Angular扩展/插件

  3. 3

    选项卡组件内的表单构建器无法在 Angular 6 中工作

  4. 4

    在几个不同的浏览器选项卡中的Angular和TypeScript / javascript单例

  5. 5

    每当浏览器选项卡/窗口关闭时,Angular 应用程序就会变得不可用

  6. 6

    Visual Studio 代码调试不适用于 Angular 6 CLI

  7. 7

    Django中的Jsonresponse可在浏览器中工作,但不适用于PostMan或Angular

  8. 8

    Angular 6 cookie 在 Angular 6 中过期或更改事件

  9. 9

    如何在 Angular 中监听浏览器的关闭事件?

  10. 10

    Contenteditable指令不适用于Angular UI Bootstrap选项卡

  11. 11

    引导选项卡不适用于AngularJS / Angular-Form-Builder

  12. 12

    Angular 6 和微调器

  13. 13

    在Angular 6中应用DomSanitizationService

  14. 14

    在 Angular 6 中停止 addEventListener

  15. 15

    Angular6 中的模态

  16. 16

    ngFor Angular 6 中的 LINQ

  17. 17

    在Angular 6中使用延迟加载时,路由不适用于其他路由

  18. 18

    Angular 6:防止浏览器工具提示在“innerHtml”中显示 HTML 标签

  19. 19

    console.log() 未在 angular 6 项目的任何浏览器中显示

  20. 20

    Angular 不适用于 Safari 浏览器,但在其他浏览器上运行良好

  21. 21

    选择器仅适用于android 6

  22. 22

    rxjs 6 管道在 Angular 6 中不起作用

  23. 23

    从 Angular 6 中的对象中删除值

  24. 24

    Angular 6 fxflex 不适用于 ngif div(如果显示 div,则未应用 fxflex)

  25. 25

    快速虚拟路径前缀不适用于 angular 6 应用程序

  26. 26

    angular 6 共享模块不适用于其他模块

  27. 27

    Angular 6- 分页不适用于数据表

  28. 28

    在CSV文件Angular 6中显示图形

  29. 29

    Angular 6中Instascan库面临的问题

热门标签

归档