Java


Контекстное меню для Netscape Navigator и Internet Explorer


,

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

<body oncontextmenu="return false;">

Но как же создать выпадающее меню, если в Netscape следующий код (работающий в Internet Explorer):

<body oncontextmenu="myfunction(); return false;">

не работает, то есть - функция вызывается, но в Nescape Navigator возникает выпадающее меню, поверх создаваемого в функции myfunction? Как же обойти это ограничение? Я нашел такое решение:

<body oncontextmenu="return myfunction()">

Как вы вполне можете догадаться, функция "myfunction()" в конце своего исполнения возвращает результат - return false, что с точки зрения Netscape Navigator считается корректным. Но только вот такой код не считается корректным у Internet Explorer. Что поделаешь, война браузеров! Придется воспользоваться таким интересным приемом, как условная трансляция (надеюсь, что подобрал словосочетание правильное, по аналогии с условной компиляцией в Си) браузера Internet Explorer. Дело в том, что Microsoft © позаботилась о создании специальных конструкций, которые для остальных браузеров выглядят как комментарий. С помощью этих конструкций можно создать достаточно сложные ветвления кода. Попробую создать ветвление кода на основе этих самых конструкций.

<script language="JavaScript" type="text/javascript"> <!--

/*@cc_on @if( true ) document.write( "<body oncontextmenu=\"myfunction(); return false;\">" ); @else*/ document.write( "<body oncontextmenu=\"return myfunction();\">" ); /*@end @cc_off @*/




- Начало -    - Вперед -