у меня есть кнопки в моем Метеор приложение, которое делает следующее:Избегайте всплывающих окон при открытии нового окна, которое требует поиска в асинхронной
пользователь нажимает кнопку нажмет> событие вызывает метод> метод вызывает внешний API, используя HTTP> внешний апи возвращает единственный знак на ссылку> метод возвращает ссылку> событие открывает новое окно (закладка) с ссылкой как URL
Моя проблема заключается в том, что новая вкладка блокируется с помощью всплывающих окон, даже если оно основано на действия пользователя
Код события:
Template.welcome.events({
'click #accessLms': function(e) {
e.preventDefault();
var submitButton = $('#accessLms').button('loading');
Meteor.call('getLmsLink', function(error, portalLink) {
if(error) {
sAlert.error(error.message);
submitButton.button('reset');
} else if(portalLink) {
window.open(
portalLink,
'_blank'
);
submitButton.button('reset');
}
});
}
});
Вот метод:
Meteor.methods({
'getLmsLink': function() {
[set vars...]
try {
var response = HTTP.call(verb, wceaApiAddress + endPoint, {
headers: {
"Request-Time": timeStamp,
"Api-Key": key,
"Signature": hash
}
});
} catch(error) {
throw new Meteor.Error(501, 'There was a problem getting a link to the E-Learning Portal');
}
var result = JSON.parse(response.content);
var portalLink = result.records.accessLink;
return portalLink;
}
});
_ «даже если оно основано на действия пользователя» _ - это не _directly_ на его основе (и только тогда он не будет заблокирован) - асинхронный запрос «отключает» его от исходного события клика. – CBroe