2014-06-24 2 views
2

toolbarbutton xul 요소에이 익명 요소가 있습니다. xul:image입니다. 나는 그것을 의사 요소 (:before, :after)로주고 싶다. 그리고 호버에 나는 그것을주고 싶습니다 cursor:pointer 스타일. 나는 또한 addEventListener('click', ...)하고 싶다. 그러나 이것의 아무도는 작동하지 않는다.익명 요소에 의사 요소 및 커서 스타일 및 이벤트 수신기 추가

심지어 XBL을 수정하여 내 스택 요소를 삽입 한 다음 스택 요소에서이 요소를 시도했지만 작동하지 않습니다.

이 작업을 도와주세요.

익명 요소 검사 DOM 검사기 추가 기능. im trying to set point on this element and give it a pseudo element and give it onMouseDown functionality

+0

"의사 요소"란 무엇입니까? DOM에 요소를 어떻게 삽입 했습니까? 코드가 있습니까? – nmaier

+2

의사 요소는 CSS와 함께 사용할 수있는': before' 및': after' 요소입니다. 사람들은 배지를 위해 그것을 사용합니다. 예를 들어 도구 모음 단추에서': before' 의사 요소를 사용하고 아이콘 위치로 변환하여이 배지를 완성했습니다. [BADGED IMAGE] (http://i.imgur.com/7HxM2d2.png). [코드] (https://gist.github.com/Noitidart/fe2f588cf89a3f70fb73). 스크래치 패드에서 실행할 수 있도록 코드를 수정하여 동기화 버튼을 배지합니다. – Noitidart

+0

아, 잡았다! 나는 CSS가 아닌 XUL/XBL의 맥락에서 생각하고 있었다. – nmaier

답변

3

그것은이 중첩 된 익명 xul:image 노드 지원 (::before) 의사 요소를 전혀하지 않는 것을 (나는이 요소에 포인트를 설정하고 그것을 의사 요소를주고 그것을하면 onMouseDown 기능을 제공하기 위해 노력하고있어) . 아니면 toolbarbutton 바인딩이 display="xul:button"이기 때문일 수도 있습니다 ... 레이아웃 엔진 내부의 어딘가에서 상위 요소가 생성 된 ::before 의사 요소를 채택하는 것을 거부했기 때문에 디버거가 말합니다. XUL! = HTML을 기억하십시오.

그러나 새 바인딩에 물건을 바인딩하거나 다시 바인딩 할 수 있습니다.

#PanelUI-fxa-status { 
    -moz-binding: url(toolbarbutton.xml#toolbarbutton); 
} 
#PanelUI-fxa-status .toolbarbutton-badge { 
    list-style-image: url(chrome://browser/skin/places/query.png); 
    transform: translate(8px,8px) scale(0.7); 
    border: 1px solid red; 
} 

그리고 새로운 바인딩 :

나는 (픽셀 완벽한 재현 될 것을 의미하지 질문 코멘트에서 예를 아날로그하지만) 스타일 동기화 버튼 바인드를 다시하기 위해 CSS를 사용 , 기본 바인딩을 기반으로 : 내가 그랬던 것처럼

<?xml version="1.0"?> 
<!-- This Source Code Form is subject to the terms of the Mozilla Public 
    - License, v. 2.0. If a copy of the MPL was not distributed with this 
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> 

<bindings 
    xmlns="http://www.mozilla.org/xbl" 
    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
    xmlns:xbl="http://www.mozilla.org/xbl"> 

    <binding id="toolbarbutton" display="xul:button" role="xul:toolbarbutton" 
      extends="chrome://global/content/bindings/button.xml#button-base"> 
    <resources> 
     <stylesheet src="chrome://global/skin/toolbarbutton.css"/> 
    </resources> 

    <content> 
     <children includes="observes|template|menupopup|panel|tooltip"/> 
     <xul:stack> 
     <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=bage,label"/> 
     <xul:image class="toolbarbutton-badge" xbl:inherits="validate,src=image,label"/> 
     </xul:stack> 
     <xul:label class="toolbarbutton-text" crop="right" flex="1" 
       xbl:inherits="value=label,accesskey,crop,wrap"/> 
     <xul:label class="toolbarbutton-multiline-text" flex="1" 
       xbl:inherits="xbl:text=label,accesskey,wrap"/> 
    </content> 
    </binding> 
</bindings> 

당신은 CSS로 배지를 설정할 수 있습니다하거나, (바인딩에 즉 src=badge 상속) <toolbarbutton ... badge="{url}"/>를 사용.

addEventListener/cursor 내용 : 정확히 무엇을 요구하고 있는지 명확하지 않습니다.

당신은 그것의 하위 요소와 모든 일반적인 도구 모음 단추 (addEventListener, command=/oncommand=, ...)와 방법,하지만 사용할 수 있습니다.

cursor: 스타일은 toolbarbutton과 함께 사용할 수 있지만 하위 요소는 사용할 수 없습니다.

두 가지 모두 바인딩에 display="xul:button"이 원인입니다. 원하지 않으면 바인딩을 수정하여 display=을 사용하지 말고 중단되는 모든 것을 고칠 필요가 있습니다.

+1

고맙습니다 !! 16x16 이미지 요소 위에'cursor : pointer '를, 이미지 위에 sepearte'click' /'mousedown// mouseenter'를 입력하고 싶습니다. ,'chrome : // mozapps/skin/places/defaultFavicon.png'의 멋진 애니메이션을 보여 주겠다. 나는 display = "xul : button"의 바인딩을 망쳐 놓을 것이다. btw 어떤 디버거를 사용합니까? 다시 한 번 감사드립니다. 나는 몇 시간 동안 고생하고 디스플레이가 범인이라는 것을 모르고 그것을 거부했습니다. 내가 잘못 생각한 것 같았습니다. 그렇지만, 무슨 뜻인지 아시 잖아요. ! : P – Noitidart

+0

편의상, 이미 설치 및 필요한 기술을 확보했기 때문에 Visual Studio 2010 + 자체 제작 Nightly을 사용했습니다 (필자는 자체 빌드 대신 중앙 체크 아웃 및 모질라 심볼 서버를 사용할 수있었습니다) 하지만 배우고 설정하는 피타입니다. – nmaier

+0

이런 젠장, O_O ............ 내 리그에서 그게 ... 예. 이것보다 조금 더 많은 것 | --- | : S – Noitidart

관련 문제