Контекстное меню, используемое в веб-приложениях, может иметь неоценимое значение. На него можно вешать «быстрые» функции и благодаря быстрому вызову правой кнопкой мыши, легко доступно.
Dojo и Dijit фреймворки позволяют создавать меню абсолютно любого стиля за считаные минуты.
Dojo JavaScript
1 2 3 4 5 |
/* require necessary classes */ dojo.require('dijit.Menu'); dojo.require('dijit.MenuSeparator'); dojo.require('dijit.MenuItem'); dojo.require('dijit.PopupMenuItem'); |
Выше подключаются необходимые виджет классы для создания контекстного меню.
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<-- menu container --> <div dojoType="dijit.Menu" id="submenu1" contextMenuForWindow="true" style="display:none;"> <-- enabled menu item --> <div dojoType="dijit.MenuItem" id="enabledItem" onClick="Clicked enabled item!">Enabled Item</div> <-- disabled menu item --> <div dojoType="dijit.MenuItem" disabled="true">Disabled Item</div> <-- separator --> <div dojoType="dijit.MenuSeparator"></div> <-- menu items with icons --> <div dojoType="dijit.MenuItem" iconClass="dijitIconCut" onClick="alert('Cutting!')">Cut</div> <div dojoType="dijit.MenuItem" iconClass="dijitIconCopy" onClick="alert('not actually copying anything, just a test!')">Copy</div> <div dojoType="dijit.MenuSeparator"></div> <-- nested popup menus with items --> <div dojoType="dijit.PopupMenuItem"> <span>Enabled Submenu</span> <div dojoType="dijit.Menu" id="submenu2"> <div dojoType="dijit.MenuItem" onClick="alert('Submenu 1!')">Submenu Item One</div> <div dojoType="dijit.MenuItem" onClick="alert('Submenu 2!')">Submenu Item Two</div> <div dojoType="dijit.PopupMenuItem"> <span>Deeper Submenu</span> <div dojoType="dijit.Menu" id="submenu4"> <div dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 1!')">Sub-sub-menu Item One</div> <div dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 2!')">Sub-sub-menu Item Two</div> </div> </div> </div> </div> <-- popup menu with disabled item --> <div dojoType="dijit.PopupMenuItem" disabled="true"> <span>Disabled Submenu</span> <div dojoType="dijit.Menu" id="submenu3" style="display: none;"> <div dojoType="dijit.MenuItem" onClick="alert('Submenu 1!')">Submenu Item One</div> <div dojoType="dijit.MenuItem" onClick="alert('Submenu 2!')">Submenu Item Two</div> </div> </div> </div> |
Меню состоит из вложенных DIV элементов. Верхний элемент — dijit.Menu виджет с потомками dijit.MenuItem. Вы также можете добавить dijit.MenuSeparator виджет или dijit.PopupMenuItem виджет с потомками dijit.MenuItem, чтобы создать всплывающее меню. Вы можете отключать элементы меню с помощью декларации «disabled='true'» или используя JavaScript:
1 |
dijit.byId('enabledItem').attr('disabled','true'); |
Это так просто! Меню могут создаваться как програмно, так и декларативно.
А если мне нужно ограничить область действия контекстного меню в пределах конкретного блока?