2014-02-28 43 views
-2

我有一種情況,回調函數打開一個新窗口。我猜瀏覽器發現回調不是用戶操作,並阻止彈出,儘管一切都是由用戶點擊觸發的。回調函數打開新窗口

我需要回調實現。這裏有沒有任何可能的技巧。請不要downvote我只是需要一些指導

function checkDoc(function){ 
onLoadSuccess{ 
    function(url) 
} 
} 

function openDoc(){ 

function openWindow(url) { 
window.open(url); 
} 

checkDoc(openWindow); 
} 
+0

需要更多細節請。 –

+0

你會告訴我們情況嗎? –

+0

在這裏,請看代碼 – Jacob

回答

1

是否有任何可能招用在這裏。

不是,沒有。正如您所指出的那樣,問題在於瀏覽器在處理用戶事件期間看到您嘗試打開彈出窗口而不是,並且完全阻止您這樣做。選項:

  1. 最好的辦法是打開一個新的窗口,而是用現代的手法來打開的窗口中,將現有窗口(例如,絕對定位的div和這樣)。

  2. 您可以通過回調顯示一個新的按鈕(或任何您喜歡的UI),然後用戶使用然後單擊以使用回調接收到的信息打開窗口。例如。 「你的結果已經準備好了,[點擊此處]在新窗​​口中查看它們。」由於您再次在用戶操作中打開窗口,瀏覽器將允許它。

  3. 一個非常第三選擇不當要麼上面會令你在做什麼觸發回調(阿賈克斯,我猜)同步,使處理過程中發生的window.open的用戶事件。但當然,同步AJAX是一個壞主意(TM) ...


回覆您的編輯:因此,舉例來說,上面的#2將是checkDoc顯示在UI的東西說的文檔已準備好,並提供一個鏈接點擊打開它。

+0

我選擇了第二個選項來顯示進度條。加載完成後,啓用按鈕。點擊這個按鈕做我想要的東西。 – Jacob