【问题标题】:How can I prevent popup blocking after ajax call?ajax调用后如何防止弹出窗口阻塞?
【发布时间】:2015-04-19 03:45:42
【问题描述】:

我正在开发一个 JS 项目,我需要一些弹出窗口,问题是当在 ajax 调用后弹出弹出窗口时,浏览器会阻止它,但如果我在用户点击它时直接制作它正在工作好吧。

浏览器会阻止这个:

$.ajax({
    url: url
}).done(function(data) {
    showPopup();
});

虽然浏览器会允许这样做:

$('#but').click(function(evt) {
    showPopup();
});

The code on Plunker

【问题讨论】:

  • 在 ajax 开始时启动弹出窗口,在结束时更新它。
  • 请在jsfiddle.net
  • 您是否考虑过灯箱或模式,或者这不是一个选项?
  • @dandavis,如果找不到另一个解决方案,我会考虑该解决方案。
  • 你不会找到另一个,除非你使用同步 ajax:对 window.open 的调用需要调用堆栈中的交互事件,否则它不会触发。您的弹出窗口首先应该说“正在加载...”,然后在数据可用时更新。

标签: javascript jquery ajax


【解决方案1】:

在浏览器块弹出窗口中

请测试

$('#ajax_but').click(function() {
  $.ajax({
    async: false,
    url: 'data.json'
  }).done(function() {
    popup();
  });
});

link

【讨论】:

  • 我并没有真正使用 $.ajax 我只是举个简单的例子,我使用的是 Restangular
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2020-05-04
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
相关资源
最近更新 更多