繁体   English   中英

IE Window无法通过任何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;
      }
  );

}

正如我在对此问题的简介中提到的那样,在$ routeProvider配置或使用'templateUrl'的指令定义中请求HTML模板时,我会看到相同的结果。 但是,我开始使用grunt-html2js,并以此为解决方案感到非常满意。

我没有反对使用JQuery的方法,而是希望在这种情况下使用Angular框架来保持代码的一致性和可测试性。 如果有人可以纠正我的方法或有任何想法,我将不胜感激。

该问题是由angular-block-ui插件引起的。 我们正在/正在将其用于ajax请求的所有“请稍候”消息传递。 从我的应用中删除插件后,该问题不再发生。 对于其他感兴趣的人,我使用的插件版本是0.2.0。 仅通过以默认行为加载插件(并在应用加载时发出ajax请求)即可复制问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM