На моем веб-сайте есть кнопка, которая просто используется для вызова функции, которая вызывает window.open
, однако недавно потребовалась настройка для проверки на стороне сервера перед открытием всплывающего окна.
С тех пор, как был добавлен код, который выполняет вызов AJAX, браузеры блокируют всплывающее окно, которое открывается в обратном вызове success
вызова AJAX. Я читал, что браузеры могут блокировать всплывающее окно, если оно не вызывается событием пользовательского щелчка, поэтому я попытался установить для запроса AJAX значение async: false
, что решило проблему в Firefox, но Google Chrome по-прежнему блокирует мое всплывающее окно. Есть ли способ обойти это?
Я мог бы переместить проверку на стороне сервера на страницу, которая открывается во всплывающем окне, но я хотел бы сделать это перед открытием всплывающего окна, если это возможно.
Код:
<a id="attackButton" href="#">Attack Base!</a>
<script type="text/javascript">
$(function() {
$('#attackButton').click(function() {
$.ajax({
url: baseurl + '/index.php?option=com_pbbgs&format=raw&getinfo=goingame',
data: { 'gameid': 618 },
dataType: 'text',
async: false,
type: 'POST',
success: function(data) {
eval(data);
if (window.gameURL) {
goingameRaw();
}
}
});
return false;
});
});
function goingameRaw()
{
window.open(window.gameURL,'test','left=20,top=20,width=1024,height=640,toolbar=0,resizable=0,location=0');
}
</script>
Пример тела ответа:
window.gameURL="http://mydomain.com/index.php?option=com_pbbgs&format=raw&startgame=618&width=1024&height=640";checktutorial('js','attack');