Angular js $ window.open无法在移动浏览器的.success中工作

时间:2016-01-07 01:54:37

标签: javascript ios angularjs jquery-mobile window.open

我和Angularjs合作,我遇到了问题。函数$ window.open(/ somewhere)在PC浏览器和移动浏览器上运行良好。但是有1例它没有用。请帮助看下面的内容:

 $window.open("https://www.myurl.com");  // OUTSIDE OF REQUEST - no problems 

 $https({
    type: "GET",
    url: "backendURL",
    data: jsonData,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        $window.open("https://www.myurl.com");  //This doesn't work. 
    },
    error: function(msg) {
        //alert(error);
    }
});

请注意,移动浏览器只会发生这种情况:chrome和safari(我没有为其他人测试)所以我想也许有人有这方面的经验。请帮助和建议。

谢谢...

2 个答案:

答案 0 :(得分:3)

我在网上找到了这个解决方案,希望它能帮到你。在回调函数之前执行var win = window.open();,然后在.success内部,通过win.location = url;更改网址。这应该可以解决问题。

答案 1 :(得分:1)

我认为最重要的问题与"this" scope in JavaScript有关。如果您能够使用ES6版本的JavaScript中的arrow functions,则只需执行

即可
success: (msg)=>{
  $window.open("https://www.myurl.com");
}

我想大多数人都没有这个选择。在这种情况下,你可以做一些类似于Yabin建议的事情:

//somewhere else in code.
var scopedWindow = $window;
//
success: function(msg){
  scopedWindow.open("https://www.myurl.com"); 
}