Использование window.open в google chrome вызывает странное поведение "tab vs new window"

Недавно мы внесли изменения в наше приложение, которое перестанет заставлять открывать новые окна при открытии новых страниц. В большинстве настроек по умолчанию это приводит к открытию этих страниц в качестве новых вкладок, но я понимаю, что это может быть зависимым от пользователя.

Однако мы заметили какое-то странное поведение в хроме, где тот же призыв:

window.open('http://google.ca');

иногда открывается на вкладке и иногда открывается в новом окне. Кажется, что это связано с задержкой в обработке javascript, но я не уверен.

Следующий JSFiddle имеет инструкции для воспроизведения поведения. Может ли кто-нибудь объяснить это поведение или предоставить возможность использовать один вызов window.open, который будет открываться последовательно таким же образом, когда используется левый клик?

JSFiddle

1 ответ

Здесь вы можете увидеть подробный ответ; суть в том, что если пользователь инициировал поведение, он откроется на новой вкладке. Если есть какая-либо задержка, например, тайм-аут, она откроется в новом окне. Поэтому ваши наблюдения относительно задержки обработки правильны.

Это может быть проблемой пользовательского интерфейса или рабочего процесса, если ваши вызовы window.open иногда задерживаются. Некоторые из других ответов, предоставленных в связанном потоке, могут предоставить вам варианты.

licensed under cc by-sa 3.0 with attribution.