Здравствуйте, сообщество StackOverflow!
Я столкнулся с очень странной проблемой и не смог найти никакой полезной информации о том, как ее решить.
Каким-то образом часть * Код 1060 * работает только в том случае, если в google chrome.
открыто окно инструментов разработчика (закреплено или как отдельное окно). Исходная проблема : из-за структуры нашего приложения нам нужно автоматически открывать несколько всплывающих окон при обслуживании страницы. Поскольку всплывающие окна НЕ открываются посредством прямого взаимодействия с пользователем (например, при нажатии), современные браузеры автоматически блокируют эти всплывающие окна. Из-за большого количества кода, который необходимо было бы реорганизовать, чтобы избежать этого, наше решение было:
- проверить, не блокирует ли браузер некоторые всплывающие окна.
- если так: сообщите об этом пользователю и предложите отключить функцию блокировки всплывающих окон в нашем браузере (например, добавив его в список исключений).
Не очень элегантное решение, которое я знаю , но другого пути не было, поэтому, пожалуйста, не комментируйте, как это сделать по-другому.
javascript код:
let popupBlockingErrorShown = false;
this.OpenWindow = function (url, name, args) {
var i = Popups.length; //Popups is an array defined as a global variable that keeps track of all
//opened popup windows
Popups[i] = window.open(url, name, args);
try {
Popups[i].focus();
} catch (e) {
if (!popupBlockingErrorShown) {
alert("very user friendly message explaining to turn of popup blocking");
popupBlockingErrorShown = true;
}
};
}
windows должны быть всплывающими окнами. Переменная popupBlockingErrorShown предназначена для предотвращения появления сообщения alert
для каждого всплывающего окна.
Отлично работает в firefox. Но в google chrome есть такое поведение:
без инструментов разработчика, открытых : первое всплывающее окно открывается нормально, остальные блокируются , нет предупреждающего сообщения .
с открытыми инструментами разработчика : открывается первое всплывающее окно, но при загрузке «зависает» (это пустая страница). Предупреждающее сообщение отображается нормально.
Сохранение открытого окна браузера и простое переключение между инструментами разработки, открытыми или закрытыми, дает такое же поведение.
Кто-нибудь может мне помочь? Очень признателен!
Это мой первый вопрос о переполнении стека, и я все еще плохо знаком с программированием, у меня чуть более года опыта. Замечания по моим навыкам «задавать вопросы» приветствуются.