[英]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.