我们正在尝试在我们的混合Ionic 1应用程序上设置顶级全局未隐藏错误检测器。在this documentation之后,我们已经订阅了window.addEventListener
,但它几乎没有捕获任何内容。然后,我们开始使用Angular's $exceptionHandler并部分解决了该问题,但仍然缺少HTTP和脚本错误。详细信息:
window.addEventListener
或Angular的$ exceptionHandler都没有处理beforeEnter
之类的离子事件,通过模板事件绑定从UI调用的离子方法,ajax调用引发的window.addEventListener
都不处理它们-Angular的$ exceptionHandler处理他们setTimeout
window.addEventListener
安排的所有代码
接下来的文件展示了所有已保证的内容:
// app.js
angular.module("starter", [dependencies]).config(function () {
window.addEventListener("error", function (event) {
console.error("Error caught", event);
});
});
。
// controllers.js
angular.module('starter.controllers', [dependencies]).controller("HomeCtrl", function ($scope, $http) {
var nullVariable = null;
var assignmentTarget;
$scope.testClick = function () {
setTimeout(function () {
assignmentTarget = nullVariable.testClickTimeout; // handled
}, 0);
assignmentTarget = nullVariable.testClick; // unhandled
};
$scope.$on('$ionicView.beforeEnter', function () {
setTimeout(function () {
assignmentTarget = nullVariable.homeCtrlBeforeEnterTimeout; // handled
}, 0);
assignmentTarget = nullVariable.homeCtrlBeforeEnter; // unhandled
});
$http({
method: "GET",
responseType: "json",
url: "comeurl"
}).then(function (response) {
setTimeout(function () {
assignmentTarget = nullVariable.ajaxResponseTimeout; // handled
}, 0);
assignmentTarget = nullVariable.ajaxResponse; // unhandled
});
setTimeout(function () {
assignmentTarget = nullVariable.homeCtrlTimeout; // handled
}, 0);
assignmentTarget = nullVariable.homeCtrl; // unhandled
});