【问题标题】:Callback function opens new window回调函数打开新窗口
【发布时间】:2014-02-28 11:49:46
【问题描述】:

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

我需要回调实现。这里有什么可能的技巧吗?请不要投反对票,我只是需要一些指导

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

function openDoc(){

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

checkDoc(openWindow);
}

【问题讨论】:

  • 请了解更多详情。
  • 你能告诉我们情况吗?
  • 给你,请看代码

标签: javascript callback window


【解决方案1】:

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

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

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

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

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


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

【讨论】:

  • 我选择了显示进度条的第二个选项。加载完成后,将启用一个按钮。单击此按钮可以完成我想要的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多