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