Добавляем...


Контекстные меню
Контекстное меню — это специальное меню, зависящее от контекста, которое в большинстве программ отображается при щелчке правой кнопки мыши. Особенностью этого меню является зависимость его содержимого от ситуации, в которой оно активизировано. Проще всего ознакомиться с указанным объектом, щелкнув правой кнопкой мыши в пределах Web-страницы (в системе Маc, — удерживая подходящую кнопку).

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

Internet Explorer 5+ и браузеры на базе Mozilla предоставляют возможность задать реакцию на активизацию контекста, используя для этого обработчик событий oncontextmenu, связанный с объектом Document.

Ассоциация подходящей функции с этим обработчиком событий позволяет настроить контекстную зависимость — например, для отображения меню оригинальной конструкции. В предположении, что определены функции showMyMenu ( ) и hideMyMenu ( ), с помощью которых отображается и скрывается нужное DHMTL-меню, можно использовать


document.oncontextmenu = showMyMenu;
document.onclick = hideMyMenu;

Нужно обязательно скрыть меню при нормальном щелчке пользователя, поскольку таким образом имитируется поведение обычного контекстного меню, и поведение вашего меню для пользователя не будет отличаться от привычного. Как и в случае любого другого обработчика событий, возвращение false от программы обработки контекстного меню запретит выполнение действия по умолчанию (т. е. отображение контекстного меню, появляющегося по умолчанию).

Если обработчик не возвращает никакого значения или возвращает true, в дополнение ко всем действиям, выполняемым обработчиком, на экране появится и "обычное" контекстное меню. Достаточно часто контекстное меню используется для того, чтобы не допустить сохранения изображения, размещенного на странице, на локальном диске пользователя.

Как правило, для того, чтобы сохранить изображение на диске, пользователь выполняет щелчок на изображении правой кнопкой мыши и использует появившееся контекстное меню, чтобы сохранить соответствующий элемент страницы на диске. Захват событий контекстного меню может не дать наивному пользователю сделать это. Например, в конец документа HTML можно поместить следующий короткий сценарий:


<script type="text/javascript">
<!---
function killContextMenu( )
{
alert("Контекстное меню заблокировано: пожалуйста, не копируйте содержимое нашей страницы.");
return false;
}
document.oncontextmenu = killContextMenu;
—>
</script>

Указанный подход кажется полезным, но реальность такова, что и он сопряжен с множеством проблем. Во-первых, пользователь может просто отключить поддержку JavaScript, перезагрузить страницу, а затем сохранить изображение как обычно.

Во-вторых, использование указанного сценария может раздражать пользователей, которые ожидают увидеть контекстное меню. Можно, конечно, усовершенствовать сценарий, организовав проверку того, что щелчок правой кнопкой мыши выполняется именно на изображении, но проблема останется той же: исчезновение контекстного меню может озадачивать или раздражать пользователей.

Средства JavaScript должны использоваться с целью создания более комфортных условий для работы пользователя, а не дополнительных трудностей.
Даже если вы считаете, что имеете основания для таких действий, подумайте еще раз: изображение все равно уже загружено на компьютер пользователя (иначе бы пользователь это изображение просто не увидел), так что, согласно большинству законов, пользователь имеет полное право сохранить соответствующее содержимое для своего персонального использования.
далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика