Контекстне меню для Netscape Navigator і Internet Explorer
Але як же створити меню, що випадає, якщо в Netscape наступний код (працює в Internet Explorer):
не працює, тобто - функція викликається, але в Nescape Navigator виникає меню, що випадає, поверх створюваного в функції myfunction? Як же обійти це обмеження? Я знайшов таке рішення:
Наше завдання створити не гарний, а зрозумілий код, прикрасити його ви можете самі! Створюю примітивний лист стилів:
Він відповідає лише за відображення і приховування контекстного меню, що нам власне і треба. Тепер треба визначити координати курсора в момент клацання правої кнопки миші по документу. Основна складність полягає в тому, що для Netscape Navigator виникає така проблема, як обробник події event.onmousedown. Він перекриває обробник, заданий в body (в общем-то цілком логічно, оскільки event задається щодо вікна, а не документа, як в body). І знову виникає ненависне браузерні контекстне меню. Я вирішив цю проблему таким чином:
Я став відстежувати кожне пересування миші на екрані і записувати координати курсора в глобальні змінні:
Тепер зберу саму функцію відображення меню:
З точки зору продуктивності такої код краще, оскільки браузерам, на основі движка Gecko, не потрібно перевіряти додаткові умови.
І на завершення цієї статті хочу навести приклад створення контекстного меню за допомогою технологій, вбудованих в Internet Explorer. По суті створюється дочірнє немодального вікно на основі отриманого коду. Цей код не може використовувати зовнішні таблиці стилів (навіть вбудовані в документ!), Тому вводити дані про стилі доведеться контекстно до елементу.