window.open (url) другое поведение - один и тот же код, разные сроки - PullRequest
0 голосов
/ 20 марта 2012

У меня есть приложение 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-секундную задержку для того же обработчика события нажатия кнопки - он будет рассматриваться как новое окно.

Имеет ли это смысл для кого-либо?

1 Ответ

1 голос
/ 22 марта 2012

Я смог понять, что происходит. Если JS открывает внешнее окно сразу после инициированного пользователем события (в основном пользовательский щелчок) - оно воспринимается браузером как новая вкладка. Если я добавлю 5-секундную задержку для того же обработчика события нажатия кнопки - он будет рассматриваться как новое окно.

Имеет ли это смысл для кого-либо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...