This example demonstrates how to use the ContextMenu widget to create two context menus. There is one for each ewe that is created and one for the green field that the ewes graze in. Use the ewe context menu to rename, clone or delete Dolly. The field's context menu enables the deletion of all the ewes from the field, the addition of a new ewe and the ability to modify the color of the grass.
Please Note: Opera users will need to do the following to use this example:
Begin by defining an array of text labels, each of which represents an item in
the ContextMenu. Next, use the
onContentReady method of the
Event utility to instantiate the ContextMenu as soon as the elements whose
"contextmenu" event trigger its display are ready to be scripted.
This ContextMenu makes use of a couple configuration properties, each of
which is set via an object literal passed as the second argument to the
constructor. The "trigger" configuration property defines the element(s) whose
"contextmenu" event trigger the display of the ContextMenu instance. In this
<li> element of the
<ul id="clones"> element is a trigger for the ContextMenu.
The "lazyload" property is used speed up the initial load time of the
ContextMenu instance. By setting the "lazyload" property to "true," the
ContextMenu will not be appended to the page until the initial firing of a
"contextmenu" event by one of the elements defined as its trigger.
Additionally, use of the "lazyload" property defers the initialization and
rendering of submenus until just before it is initially made visible. Lastly,
the "itemdata" property is set to the array of MenuItem configuration
properties; each item in the array will be used to add a new item to the
ContextMenu when it is rendered.
When multiple elements are defined as the "trigger" for a ContextMenu instance,
the "contextEventTarget" property can be used to determine which element
triggered its display. The "contextEventTarget" property returns a reference
to the HTML element whose "contextmenu" event triggered the display of the
ContextMenu instance. In this example, the "contextEventTarget" property is
used inside the scope of a "click" event listener (see "onEweContextMenuClick")
to determine which
<li> element triggered the display
of the "ewe" ContextMenu instance.
In the example above, a single "click" event handler is added to the ContextMenu instance and discrete functionality is executed depending of the index of the MenuItem instance that was the target of the event. An alternative way of listening for the "click" event on MenuItem instances is to use the "onclick" configuration property. The "onclick" configuration property provides an easy way define a "click " event listener for individual items when building menus from script. The "onclick" configuration property accepts an object literal representing the code to be executed when the MenuItem instance is clicked. The format for the object literal is:
The second ContextMenu instance in this example makes use of the "onclick" configuration property:
All YUI 2.x users should review the YUI 2.8.2 security bulletin, which discusses a vulnerability present in YUI 2.4.0-2.8.1.