Ответ 1
Там "новые окна" и там "всплывающие окна". Использование target=_blank
откроется в новом окне, за исключением того, что современные браузеры по умолчанию добавили новые окна в новые вкладки. Кажется, что это не то, что вы хотите.
Для фактического всплывающего окна вы хотите window.open()
и не забудьте указать определенную ширину и высоту, иначе некоторые браузеры по-прежнему будут помещать новое окно в новую вкладку. Пример Дарина выглядит хорошо для меня.
Что касается блокировки всплывающих окон, общий подход, который делают браузеры, заключается в том, что всплывающие окна, инициированные действием пользователя, разрешены (например, щелчок), тогда как всплывающие окна, созданные спонтанно через script, например, это заблокирован:
<script type="text/javascript">
window.open("http://www.google.com/", "Google", "width=500,height=500");
</script>
Тем не менее, блокирование рекламы является эскалацией войны, вы никогда не можете быть уверены, что всплывающее окно откроется. Если ваше всплывающее окно заблокировано, вызов window.open возвращает значение null. Поэтому я бы модифицировал пример Дарена следующим образом:
<a href="http://www.google.com/"
onclick="return !window.open(this.href, 'Google', 'width=500,height=500')"
target="_blank">
Если всплывающее окно заблокировано, onclick возвращает true
, который следует по ссылке, которую они нажали, открыв ее в новом окне или вкладке. Это резерв, поэтому, по крайней мере, контент доступен (если не очень).