window.focus然后在http promise中工作

时间:2016-02-21 11:52:18

标签: javascript jquery angularjs

我尝试在focus请求的回调(then函数)内的新标签窗口上设置http,但它不起作用。即 -

$http.get('').then(function () {
    that.myWin.focus(); // isn't focusing 
})

我为此做了 demo ,按"打开"打开选项卡,然后按" Focus"把重点放在这个不起作用的标签上。

这是另一个demothen内的focus工作正常。

如何使.template { display: none; }功能正常运行?

编辑:

我正在谷歌浏览器上进行测试。

1 个答案:

答案 0 :(得分:1)

我知道这是一个很麻烦的问题,花了我几个小时,实际上我发现了一些有用的东西。

调试时我发现,如果我们尝试将标签重点关注时间超过1 sec,则它不会关注标签。所以我假设在一秒钟内我应该访问that.myWin对象,否则在1sec选项卡聚焦后没有任何反应。

$scope.focus = function() {
    //maintained flag for checking promise completed or not.
    var promiseResolved = false; //by default false
    // on each second I'm checking promise has resolved or not.
    var interval = setInterval(function() {
      if (promiseResolved) {
        console.log('Going to focus tab')
        clearInterval(interval); //clearing interval
        that.myWin.focus(); //focusing tab
      }
    }, 1000); // 1sec interval because of above assumption
    //ajax call using $http
    $http.get('').then(function() {
      //set flag to true when promise resolved
      promiseResolved = true;
      console.log("I'm here");
    });
};

我知道我部分地想出了可能发生的事情,但任何人都可以指出,如果他们在我的回答中发现任何对错。我很感激帮助。感谢。

Demo Fiddle