>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >event.stopPropagation не работает http://forum.mozilla-russia.org/viewtopic.php?id=45315 |
KML > 21-07-2010 13:30:03 |
Вот этот код очень интересно себя ведёт: Выделить код Код:<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <toolbar id="zzz"> <toolbaritem class="toolbaritem-1 chromeclass-toolbar-additional" id="my-toolbaritem" align="center" pack="end" flex="0" contextmenu="_child" > <toolbarbutton id="my-button" class="toolbarbutton-1 chromeclass-toolbar-additional" flex="0" label="button" hidden="false" tooltiptext="menu.name;" oncommand="alert('btnClick');" type="menu-button"> <menupopup id="dropdown-menu"> <menu label="menu" onclick="alert('menuClick');event.preventDefault();event.stopPropagation();"> <menupopup> <menuitem label="save" oncommand="alert('saveClick');event.preventDefault();event.stopPropagation();"/> </menupopup> </menu> </menupopup> </toolbarbutton> </toolbaritem> </toolbar> </window> Если кликнуть на "save" получим два алерта:
menuClick Заменим oncommand Выделить код Код:<menuitem label="save" oncommand="alert('saveClick');event.preventDefault();event.stopPropagation();"/> на onclick Выделить код Код:<menuitem label="save" onclick="alert('saveClick');event.preventDefault();event.stopPropagation();"/> Если кликнуть на "save" получим два алерта:
saveClick Как решить эту проблему чтобы алерты не дублировались? |
Shutnik > 21-07-2010 14:41:33 |
я бы добавил условие в обработчик клика кнопки (my-toolbaritem) |
luitzen > 21-07-2010 14:49:04 |
Выделить код Код:<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <toolbar id="zzz"> <toolbaritem class="toolbaritem-1 chromeclass-toolbar-additional" id="my-toolbaritem" align="center" pack="end" flex="0" contextmenu="_child" > <toolbarbutton id="my-button" class="toolbarbutton-1 chromeclass-toolbar-additional" flex="0" label="button" hidden="false" tooltiptext="menu.name;" oncommand="if(this==event.target){alert(this.label)};" type="menu-button"> <menupopup id="dropdown-menu"> <menu label="menu" onclick="if(this==event.target){alert(this.label)};"> <menupopup> <menuitem label="save" onclick="alert(this.label);"/> </menupopup> </menu> </menupopup> </toolbarbutton> </toolbaritem> </toolbar> </window> Жестоко, согласен. |