2017-04-12 107 views
0

我想從服務器端獲取響應後在Facebook上發佈一些數據。瀏覽器(瀏覽器名稱)阻止此網站(Facebook)打開彈出式窗口

例子:

function share_to_facebook(url){ 

    $.ajax({ 
    type: "POST", 
    url: "/create_data", 
    data: data, 
    success: function(result) { 
     if(result.success=="success"){ 
     // url contains the facebook url with some required parameters. 
     window.open(url, '_blank'); 
    } 
    } 
    }); 
} 

執行這種方法,獲得以下MESSAGE- 「瀏覽器(瀏覽器名)打開一個彈出窗口阻止這個網站」

如何打開Facebook頁面後不得到這個錯誤?在現代瀏覽器的默認設置

+0

爲什麼你需要打開窗口? – madalinivascu

+0

我想打開Facebook的URL分享facebook上的帖子 –

回答

0

彈出廣告攔截只讓彈出窗口辦理,如果他們在用戶交互直接打開(最常見的點擊。)

但是一個異步AJAX調用回調函數內,即「直接」連接丟失。瀏覽器再也看不到與之前用戶交互的連接,因此認爲它是用戶沒有要求的「自動」彈出窗口,因此被阻止。

你可以試着在你的AJAX請求之前打開彈出窗口,將一個空白頁面/ about:blank作爲URL(假設share_to_facebook在用戶交互中被直接調用),然後在你的回調中你只需要爲彈出框分配一個新的URL窗口。

function share_to_facebook(url){ 
    var myPopup = window.open('about:blank', '_blank'); 

    $.ajax({ 
    // ... 
    success: function(result) { 
     if(result.success=="success"){ 
     // url contains the facebook url with some required parameters. 
     myPopup.location.href = url; 
    } 
    } 
    }); 
} 
+0

非常感謝您的回覆! 但是,如果AJAX響應成功,我們需要打開窗口。 –

+0

不可能直接。但是,如果它不是成功的,你可以再次關閉彈出窗口。 – CBroe

+0

感謝您的回覆 –