我使用大气和angularJS来创建客户端应用程序。 我想在用户单击浏览器中的“返回”按钮或更改位置页面时取消订阅ws。 我的代码在Chrome 38,Safari中正常运行,但在Firefox 33中无效。 我使用角度氛围服务来处理ws。
链接:github.com > spyboost > angular-atmosphere-service.js
var unbindHandler = $scope.$on('$locationChangeStart', function (event, next, current) {
var path = $location.path();
event.preventDefault();
showPopupAlert('confirm', $('#popup_alert'),
function () {
try {
atmosphereService.unsubscribe(request);
} catch(e) {
$log.debug(e);
}
$scope.$apply(function () {
unbindHandler();
$location.url(path).replace();
});
}, function () {
}, errorMes('client.changepage.on.pumping'));
});
function showPopupAlert(type, obj, confirmFunction, rejectFunction, message) {
if (type != 'confirm') {
obj.find('#btn-cancel').hide();
} else {
obj.find('#btn-cancel').show();
}
obj.find('#question').html(message);
obj.modal('show');
obj.find('#btn-ok').unbind().bind('click', function () {
obj.modal('hide');
if (confirmFunction !== 0) {
confirmFunction();
}
});
obj.find('#btn-cancel').unbind().bind('click', function () {
obj.modal('hide');
if (rejectFunction !== 0) {
rejectFunction();
}
});
}
在Firefox中打开控制台日志,我有一个对象
得到columnnumber
0
数据
null
文件名
"http://192.168.1.102/ser.../libs/atmosphere-min.js"
内
null
LINENUMBER
635
消息
""
名称
""
结果
2153644038
堆
"J@http://192.168.1.102/s...query/jquery.js:3:4749\n"
原
Object { toString=toString(), message=undefined, name=undefined}