簡體   English   中英

window.open 在 http post angular 中不起作用

[英]window.open doesn't work in http post angular

這是我的代碼:

        $rootScope.http({
            url: myUrl,
            method: "POST",
            data: "",
        }).success(function (data) {
            alert(data.uri); //for test, and I see correct uri shows up here.
            window.open(data.uri, ''); return false; //window doesn't open.
        });

window.open 在.success中不起作用,但它在 http post 方法之外起作用。 回調函數有問題。 我在$.ajax中遇到了同樣的問題並修復了它。 但是同樣的解決方案在這里不適用於角度。

我們之前遇到過類似的問題,原因很簡單; 在大多數現代瀏覽器中,瀏覽器將不允許window.open()調用,這不是用戶活動的直接結果。

在這里,您的window.open()是在異步調用中觸發的,該調用不是由用戶操作調用的,例如:單擊鏈接或按鈕。

您可以通過禁用彈出窗口阻止程序來解決此問題,但我們必須通知用戶他們的彈出窗口阻止程序已啟用。 為此,您可以執行以下操作:

    $rootScope.http({
        url: myUrl,
        method: "POST",
        data: "",
    }).success(function (data) {
        $rootScope.popupWindow = window.open(data.uri, '');

        $timeout(function() {                                                                                       
             // Check if popup blocker is enabled by verifying the height of the new poup                                                                     
             if (!$rootScope.popupWindow || $rootScope.popupWindow.outerHeight === 0) {
                 alert("Please disable the popup blocker");
             }
        }, 1000);
    });

注意:我已經測試過這是一個瀏覽器,不確定在移動設備上,但這應該可以工作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM