Хотя я в основном занимаюсь десктопной разработкой, с сайтами тоже приходится сталкиваться, да и в процессе преподавания с этим интенсивно работаешь. Поэтому постараюсь высказать сугубо личные принципы, на которые (на мой взгляд) должна опираться работа современных веб-сайтов.
После озвучивания каждого из принципов не буду двигаться дальше, пока не приведу
собственный сайт в соответствие с данным принципом.
Задача - обустроить сайт таким образом, чтобы работа с ним мало отличалась от работы с десктопным приложением по скорости, удобству и доступности. Современные технологии HTML/CSS/JS позволяют многое, только мало ли кто всем этим пользуется. Скучный и унылый сайт можно превратить в конфетку.
Разумеется, принципы не абсолютны; если возможны исключения, постараюсь сказать о них.
Принцип 1. Взаимодействие пользователя с сайтом должно производиться в рамках единого интерфейса, без неожиданных переключений контекста.
Пользователь должен быть спокоен, он работает в рамках определённого процесса и ожидает от сайта определённого поведения. Не нужно его пугать.
Следствие 1. Никаких всплывающих окон (window.open()). Если так хочется показать диалог, можно нарисовать его с помощью div'а. Если он не модальный, лучше вообще сделать отдельную страницу. Если модальный - тогда да. Но вообще, модальность сама по себе - зло. Может быть, мы к ней ещё вернёмся.
Следствие 2. Одна вкладка - один контекст работы пользователя. Ссылки в новом окне () открываются только при открытии нового контекста работы (перехода к независимой части сайта или перехода по внешней ссылке) и только с предупреждением пользователя об этом. В иных местах переходы в новое окно недопустимы. Если пользователю захочется, он откроет ссылку в новом окне своими средствами.
Единственное возможное исключение - переход с результатов поиска на чужие сайты (см. поиск Google). В этом случае подобное поведение было бы удобно. Но я бы лучше прямо писал о нестандартном способе перехода в ссылке ("открыть в новом окне"). Или ещё лучше - сделал бы ссылку кнопкой, т.к. реального перехода по ссылке, вообще говоря, не происходит. И переключение контекста перестанет быть неожиданным.
В случае нарушения принципа пользователю придётся переключаться туда-сюда между вкладками браузера, постоянно закрывать всплывающие окна, после чего он будет сильно раздражён и навсегда покинет ваш сайт.
Поправлено, принцип работы немного изменён: раз в браузере есть механизм вкладок, почему бы его не использовать? Главное - предупредить пользователя. Это можно сделать как угодно, например пиктограммой или цветом ссылки.
На моём сайте нет всплывающих окон и переходов в новое окно, так что тут подтягивать нечего.