【问题标题】:Opening up new tab based on ajax response - Angular JS基于 ajax 响应打开新选项卡 - Angular JS
【发布时间】:2016-10-19 17:47:35
【问题描述】:

点击超链接时,

<a href="" ng-click="function(id)">{{id}}</a>

我需要根据我从 ajax 调用中获得的响应(例如,一个标志 - responseFlag)在新选项卡中打开一些内容。

我尝试了两种方法。

注意:函数依赖于 id,所以不要在页面加载时使用它。

1.

$http.get(url).success(function(response) {
        if(response.data.responseFlag==true){
             $window.open("http://www.example.com");
        }
        else{
             //perform something else other that window.open
        }
});

这里的问题是浏览器(Chrome、Mozilla)中的“弹出窗口阻止程序” - 一直阻止它们。

2.

var w = $window.open("","_blank");
$http.get(url).success(function(response) {
        if(response.data.responseFlag == true){
              w.location = "http://www.example.com";
        }
        else{
              //perform something else
        }
});

这里,如果'responseFlag = true',它会在新标签中打开。但正如您可能已经猜到的那样,对于“responseFlag = false”,选项卡也会打开。我也许可以在“其他”中使用 w.close() 。但我认为这不是解决方案。

朋友们帮帮我吧!

【问题讨论】:

    标签: javascript angularjs ajax popup window.open


    【解决方案1】:

    在您的第二个示例中,您在执行请求之前打开了新选项卡,因此执行回调并不重要,您将打开一个新窗口。 我看不出为什么 $window.open(...) 可以与您的第二个示例一起使用但不能在第一个示例中使用的任何原因,可能是因为“_blank”参数...

    那么,你可以试试这个方法吗?

    $http.get(url).success(function(response) {
            if(response.data.responseFlag == true){
                var w = $window.open("","_blank");
                w.location = "http://www.example.com";
            }
            else{
                //perform something else
            }
    });
    

    【讨论】:

    • 嗯,我试过了。实际上,如果它来自直接用户活动之类的东西,它似乎只会在新标签中打开。它不是第一种情况。
    猜你喜欢
    • 2018-09-05
    • 2019-08-05
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多