У меня есть ситуация, когда пользователь нажимает кнопку, я выполняю запрос ajax, а затем использую результат запроса ajax для создания URL-адреса, который я хочу открыть на новой вкладке. Тем не менее, в chrome, когда я вызываю window.open в обработчике успеха для запроса ajax, он открывается в новом окне, как всплывающее окно (и блокируется всплывающими блоками). Я предполагаю, что, поскольку код успеха асинхронен из кода обработки кликов, который хром считает, что он не был вызван щелчком, хотя он причинно связан с щелчком. Есть ли способ предотвратить это, не делая синхронный запрос ajax?
EDIT Вот несколько минимальных кодов, которые демонстрируют это поведение:
$('#myButton').click(function() {
$.ajax({
type: 'POST',
url: '/echo/json/',
data: {'json': JSON.stringify({
url:'http://google.com'})},
success: function(data) {
window.open(data.url,'_blank');
}
});
});
Одна нота пояснений: меня больше беспокоит ее открытие в отдельном окне, а не в виде вкладки, чем я о том, что он блокируется блокировщиком всплывающих окон.