Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№121-07-2010 13:30:03

KML
Участник
 
Группа: Extensions
Откуда: Днепропетровск
Зарегистрирован: 01-06-2005
Сообщений: 422
UA: Firefox 3.6

event.stopPropagation не работает

Вот этот код очень интересно себя ведёт:
XULExplorer:

Выделить код

Код:

<?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" получим два алерта:

  1. saveClick
  2. menuClick

Заменим oncommand

Выделить код

Код:

<menuitem label="save" oncommand="alert('saveClick');event.preventDefault();event.stopPropagation();"/>

на onclick

Выделить код

Код:

<menuitem label="save" onclick="alert('saveClick');event.preventDefault();event.stopPropagation();"/>

Если кликнуть на "save" получим два алерта:

  1. btnClick
  2. saveClick

Как решить эту проблему чтобы алерты не дублировались?


:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

Отсутствует

 

№221-07-2010 14:41:33

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.6

Re: event.stopPropagation не работает

я бы добавил условие

Выделить код

Код:

if(this.firstChild.state == "closed")

в обработчик клика кнопки (my-toolbaritem)

Отсутствует

 

№321-07-2010 14:49:04

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 3.6

Re: event.stopPropagation не работает

Выделить код

Код:

<?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>

Жестоко, согласен.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]