IE窗口失去了对任何XMLHttpRequest启动Angular应用程序的关注
IE Window loses focus on start of Angular app with any XMLHttpRequest
我在IE 10和11中看到了一些奇怪的行为,在加载AngularJS应用程序时,窗口会失去焦点。只有在最初加载页面时发出XMLHttpRequest请求时才会发生这种情况。之后的任何应用程序交互,无论是否使用ajax,都是正常的。我已经尝试使用$resource和$http来发出请求。两者的结果相同。我的应用程序的资源模块定义为:
/**
* Resource module
*/
angular.module('appname.resources.sampleData', ['ngResource'])
.service('sampleDataResource', ['$resource', 'restUrl', SampleRestResource])
.constant('restUrl', '/url/path/to/rest/data/:id');
/**
* Resource definition
*/
function SampleRestResource ($resource, restUrl) {
this.resource = $resource(restUrl);
}
/**
* Resource query function
*/
SampleRestResource.prototype.query = function () {
return this.resource.query().$promise;
};
使用其余资源的页面控制器定义为:
/**
* Page module definition
*/
angular.module('appname.pages.defaultpage', [])
.constant('strTitle', 'Page Title')
.controller('defaultPageController', ['$scope', 'strTitle', 'sampleDataResource', DefaultPageController]);
/**
* Page controller definition
*/
function DefaultPageController($scope, strTitle, sampleDataResource) {
$scope.pageTitle = strTitle;
sampleDataResource.query().then(function(data) {
$scope.sampleDataFromResource = data;
});
}
如果我用等效的JQuery交换控制器中的ajax请求,则窗口不会失去焦点。然后控制器变为:
/**
* Page controller definition
*/
function DefaultPageController($scope, strTitle, sampleDataResource) {
$scope.pageTitle = strTitle;
$.get("/url/path/to/rest/data").done(
function(data){
$scope.sampleDataFromResource = data;
}
);
}
正如我在这个问题的介绍中提到的,当使用"templateUrl"在$routeProvider配置或指令定义中请求HTML模板时,我看到了相同的结果。然而,我开始使用grunt-html2js,并对它作为一种解决方案感到非常满意。
我并不反对使用JQuery,但在这种情况下,我宁愿使用Angular框架来保持代码的一致性和可测试性。如果有人能纠正我的方法或有任何想法,我将不胜感激。
问题是由angular block ui插件引起的。我们正在/曾经使用它来处理ajax请求的所有"请等待"消息。一旦我从我的应用程序中删除了插件,问题就不再发生了。对于其他感兴趣的人来说,我使用的插件版本是0.2.0。只要用默认行为加载插件(并在加载应用程序时发出ajax请求)就可以复制这个问题。
相关文章:
- angular 1.5应用程序中的导航栏
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Grunt构建导致Angular应用程序在dist上崩溃
- 在Angular应用程序中每个帖子投票一次
- 如何构建angular.js应用程序
- 微软边缘浏览器缓存中的RESTful Angular应用程序
- Angular ng控制器与ng应用程序冲突
- 如何在给定的angular应用程序中获取所有指令名称
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 如何将现有的angular js应用程序集成到Laravel 5中
- 从C#应用程序向Angular页面发送帖子请求
- angular js应用程序不工作
- 我可以在React应用程序中使用什么作为Angular的等价物;s$http.get
- 同一'angular应用程序'在页面上
- 如何计算angular JS应用程序(单页应用程序)的页面加载时间
- RequireJS正在加载angular应用程序,但没有't创建app.controller
- 正在节点上设置Angular phonecat应用程序
- 我需要Angular/Ionic应用程序的帮助
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器