Поскольку window.open
требует прямого действия пользователя (например, щелчка), чтобы избежать блокировщиков всплывающих окон, вы можете изменить свой код следующим образом:
$.ajax({
url:'/echo/js/?js=hello%20world!',
complete: function (response) {
$('#output').html(response.responseText);
//window.open('https://www.google.com');
$( "body" ).append('<button id="openPopup">Open Site</button>');
$( "#openPopup" ).click( function() {
window.open('https://www.google.com');
});
},
error: function () {
$('#output').html('Bummer: there was an error!');
},
});
Если запрос ajax выполнен успешно, пользователям отображается кнопка, которую они должны нажать, чтобы перейти в другой домен.
Редактировать: Ссылаясь на ваш комментарий ниже, я думаю, что нашел решение:
var myPopup;
$( document ).on("click", "#myButton", function() {
myPopup = window.open("/");
$.ajax({
url:'/echo/js/?js=hello%20world!',
complete: function (response) {
$('#output').html(response.responseText);
//window.open('https://www.google.com');
myPopup.location.href = 'https://www.google.com';
},
error: function () {
$('#output').html('Bummer: there was an error!');
},
});
});
Сначала вы должны объявить глобальную переменную для вашего нового окна. Когда нажимается ваша кнопка, которая запускает запрос ajax, вы открываете новое окно, которое ссылается на ваш текущий домен (https://site1.example.com/ в вашем случае). Это принимается как прямое действие пользователя, поэтому блокировщик всплывающих окон не вступает в силу.
В функции complete
вы перенаправляете это окно в один из других доменов (https://site1.example2.com или https://site2.example.com), и вуаля. Я протестировал его с активированным блокировщиком всплывающих окон, и он работал.