У меня есть приложение ExtJs.Когда пользователю необходимо просмотреть отчет в формате PDF, созданный на стороне сервера, я открываю новую ссылку, используя функцию window.open()
.Я передаю URL для службы, которая предоставляет PDF-файл, хранящийся на веб-сервере.
Эта функция вызывается из двух разных мест: пользователь может прокрутить список отчетов и щелкнуть кнопку на панели инструментов на одном из них и посмотреть отчет, или пользователь может выполнить отчет, дождаться его создания, а затем приложение будет автоматически представленоЭто.Единственная разница между двумя сценариями - второй - асинхронный, а последний шаг, когда отчет открыт, вызывается из функций обратного вызова.
Но эти два случая ведут себя по-разному.Первый - откроет новую вкладку в Chrome и Safari, и это не будет считаться окном popup
.Во втором случае - он будет открыт в новом окне (конечно, в тех же браузерах - поэтому конфигурация точно такая же).
Я застрял, чтобы понять, почему поведение отличается.
Есть идеи?
Обновление: уточнить - оба являются вызовами JS.один - что-то вроде:
buttonClick: function() {
window.open('myreporturl');
}
другой - немного сложнее, но в конце:
runReport: function() {
store.on('load', function {
window.open('myreporturl');
});
store.load();
}
Update2: я смог понять, что происходит.Если JS открывает внешнее окно сразу после инициированного пользователем события (в основном пользовательский щелчок) - оно рассматривается браузером как новая вкладка.Если я добавлю 5-секундную задержку для того же обработчика события нажатия кнопки - он будет рассматриваться как новое окно.
Имеет ли это смысл для кого-либо?