Я знаю, что Safari пытается заблокировать открытие новой вкладки с помощью window.open () во время вызова ajax. Нам нужно вызвать window.open (), чтобы открыть новую вкладку перед вызовом ajax, чтобы программа могла предотвратить блокировку из Safari. Ссылка для выше, window.open (url, '_blank'); не работает в iMac / Safari .
Однако, что если я захочу использовать информацию из вызова ajax, чтобы проверить, нужно ли мне открывать новую вкладку, то есть условно открыть новую вкладку, зависит от проверка ajax вызова?
Тогда я не могу открыть новую вкладку до вызова ajax. Это потому, что если проверка не пройдена, мне нужно закрыть вкладку, которую я открыл перед вызовом ajax ..., что не соответствует поведению, которое я хочу для моей программы.
Как я могу сделать так, чтобы я мог открыть новую вкладку, если информация проверена из вызова ajax? Спасибо всем за ответы!
let newTab = window.open();
someAjaxChecking(...).then((isValid)=>{
// isValid is a return boolean from the ajax calling someAjaxChecking() to
// determine whether redirect the new tab or close it
if(isValid){
newTab.location = url;
}else{
newTab.close(); // ***it is not desire to open and close the new tab...
}
})
Реальный случай:
- Мне нужно отправить форму (набор данных) на мой backbend, чтобы проверить форму (AJAX) Вызов);
- тогда он вернет логическое значение (isValid), чтобы сказать, является ли форма действительной;
- тогда откроет новую вкладку, если логическое значение (isValid) истинно