ng-idle 在 IE9 和 IE10 中不起作用
ng-idle is not working in IE9 and IE10
ng-idle
在 IE9 和 IE10 中不工作。假设如果您将鼠标指针留在页面上,则不考虑用户处于非活动状态。当您将鼠标指针保持在页面之外时,它正在工作。
请提供解决方案。
看来问题出在 mousemove 事件上,快速解决方法是删除 IE 浏览器的 mousemove 事件。使用useragent编写条件语句,使用ng-idle
的interrupt()
方法配置事件
if (navigator.userAgent.toLowerCase().indexOf("msie") > 0) {
// Code for Internet Explorer because ng-idle doesn't stop listening mousemove event.
IdleProvider.interrupt('keydown DOMMouseScroll mousewheel mousedown touchstart touchmove scroll');
}
else {
IdleProvider.interrupt('mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove scroll');
}
替换
$document.find('body').on(options.interrupt, function(event) {
svc.interrupt();
}
在angular-idle.js
中加入以下代码
$document.find('body').on(options.interrupt, function(event) {
if (event.type !== 'mousemove' || (event.movementX || event.movementY)) {
svc.interrupt();
}
});
ng-idle
在 IE9 和 IE10 中不工作。假设如果您将鼠标指针留在页面上,则不考虑用户处于非活动状态。当您将鼠标指针保持在页面之外时,它正在工作。
请提供解决方案。
看来问题出在 mousemove 事件上,快速解决方法是删除 IE 浏览器的 mousemove 事件。使用useragent编写条件语句,使用ng-idle
的interrupt()
方法配置事件
if (navigator.userAgent.toLowerCase().indexOf("msie") > 0) {
// Code for Internet Explorer because ng-idle doesn't stop listening mousemove event.
IdleProvider.interrupt('keydown DOMMouseScroll mousewheel mousedown touchstart touchmove scroll');
}
else {
IdleProvider.interrupt('mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove scroll');
}
替换
$document.find('body').on(options.interrupt, function(event) {
svc.interrupt();
}
在angular-idle.js
中加入以下代码$document.find('body').on(options.interrupt, function(event) {
if (event.type !== 'mousemove' || (event.movementX || event.movementY)) {
svc.interrupt();
}
});