2014-01-15 2 views
1

나는 XULXUL 트리의 체크 박스 변경 사항을 잡기 위해 어떤 이벤트를 캡처해야합니까?

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 
<?xml-stylesheet href="chrome://zotero-report-customizer/skin/options.css"?> 
<!DOCTYPE window SYSTEM "chrome://zotero-report-customizer/locale/zotero-report-customizer.dtd"> 
<prefwindow id="zotero-report-customizer-perf" title="&zotero-report-customizer.name;" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="initializePrefs();"> 
    <stringbundleset id="stringbundleset"> 
    <stringbundle id="zotero-report-customizer-options" src="chrome://zotero-report-customizer/locale/options.properties" /> 
    <stringbundle id="zotero-options" src="chrome://zotero/locale/zotero.properties" /> 
    </stringbundleset> 
    <prefpane label="&zotero-report-customizer.remove;" id="zotero-report-customizer-perfpane"> 
    <preferences id="preferences"/> 
    <groupbox> 
     <caption label="&zotero-report-customizer.remove;" /> 
     <tree flex="1" id="treeCollection" seltype="single" hidecolumnpicker="true" height="400" editable="true" onselect="togglePref(this);"> 
     <treecols> 
      <treecol id="show" primary="true" type="checkbox" label="Show" editable="true" width="40"/> 
      <treecol id="field" label="Field" editable="false" flex="1"/> 
     </treecols> 
     <treechildren id="itemTypes"/> 
     </tree> 
    </groupbox> 
    </prefpane> 
    <script src="chrome://zotero/content/include.js" /> 
    <script src="chrome://zotero-report-customizer/content/include.js" /> 
    <script src="options.js" /> 
</prefwindow> 

내가 dynamially 체크 박스와 나무 행을 추가의이 비트를 가지고; 그들은 잘 나타납니다. 하지만 "켜기 ..."이벤트에서 나는 체크 박스를 토글하는 것을 알아 차릴 필요가 있습니까? Onselect는 그것을하지 않습니다.

답변

1

내가 원래 질문을 잘못 이해 ....

에서만 <tree> 자체에, 나무의 행/COLS/세포에 이벤트 핸들러를 추가 할 수 없습니다. 예 : 트리에서 '클릭'이벤트를 감지 할 수 있습니다. 그러면 을 클릭해야하며, 마지막으로 수행해야 할 작업이 무엇인지 파악해야합니다.

마우스 클릭 이벤트에서 <treecell>을 얻기를위한

MDN snippet 다음 cellText 당신이 있는지 확인해야이 시점에서

function onTreeClicked(event){ 
    var tree = document.getElementById("my-tree"); 
    var tbo = tree.treeBoxObject; 

    // get the row, col and child element at the point 
    var row = { }, col = { }, child = { }; 
    tbo.getCellAt(event.clientX, event.clientY, row, col, child); 

    var cellText = tree.view.getCellText(row.value, col.value); 
    alert(cellText); 
} 

, 대신 경고 :

XUL :

<tree id="my-tree" onclick="onTreeClicked(event)"> 

자바 스크립트 treeCell (checkbox 모드)이 점검 (또는 실행되지 않음)되고 그에 따라 작동합니다.

MDN에 <tree>documentation에서 의역 :

var cellChecked = tree.view.getCellValue(row.value, col.value) == 'true'; 

편집 :는 COLS는/세포 editable로 표시하거나이 작동하지 않을 수 있는지 확인하십시오!