回调函数打开新窗口

时间:2014-02-28 11:49:46

标签: javascript callback window

我遇到一个回调函数打开一个新窗口的情况。我猜浏览器发现回调不是用户操作并阻止弹出窗口,尽管所有内容都是由用户点击触发的。

我需要回调实现。这里有什么可用的技巧吗?请不要downvote我只需要一些指导

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

function openDoc(){

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

checkDoc(openWindow);
}

1 个答案:

答案 0 :(得分:1)

  

这里有什么可用的技巧吗?

不是,不。正如您所指出的,问题是浏览器在处理用户事件期间看到您尝试打开弹出而不是,并且非常正确地阻止您这样做。选项:

  1. 最好的选择是打开一个新窗口,而是使用现代技术打开现有窗口内的窗口(例如,绝对定位的div等等)。

  2. 您可以让回调显示一个新按钮(或您喜欢的任何UI),用户然后点击以使用回调收到的信息打开窗口。例如。 “你的结果准备好了,[点击这里]在新窗口中查看它们。”由于您再次在用户操作中打开窗口,浏览器将允许它。

  3. 上述任何一个非常糟糕的第三选择是做出你正在做的任何事情来触发回调(ajax,我猜)同步,以便在处理用户事件期间发生window.open。但当然,同步ajax是一个坏主意(tm) ......


  4. 重新编辑:例如,上面的#2将是checkDoc在UI中显示文档已准备好的内容,并提供单击以打开它的链接。