2014-02-28 40 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