treeview_keyboard.js
来自「精美的AJAX树形菜单」· JavaScript 代码 · 共 235 行
JS
235 行
function qzjl(){
if(qqPa.qzfw==0){
return qqPa.qzai;
};
var qzjf=qqPa.qzal.parentNode;
qqPa.qzfw--;
for(var qzba=0;qzba<qzjf.childNodes.length;qzba++){
if(qzjf.childNodes[qzba].nodeName=='TABLE'){
qqPa.qzap=qzba;
}
else if(qzjf.childNodes[qzba]==qqPa.qzal){
break;
};
}
;
qqPa.qzal=qzjf;
qqPa.qzai=qqPa.qzal.childNodes[qqPa.qzap];
return qqPa.qzai;
}
;
function qzlf(){
qzaq=qzer(false,true);
var qzmd;
do{
qzmd=qzaq;
qzaq=qzer(true,true);
}
while(qzmd!=qzaq);
var qzut=qqPa.qzo(qzdu(qqPa.qzai.id));
if(qzut.Expanded&&qzut.ChildIndices.length>0){
return qzlf();
};
return qqPa.qzai;
}
;
function qzub(){
if(qqPa.qzap>0){
for(qqPa.qzap--;qqPa.qzap>=0;qqPa.qzap--){
if(qqPa.qzal.childNodes[qqPa.qzap].nodeName=='TABLE'){
break;
};
}
;
qqPa.qzai=qqPa.qzal.childNodes[qqPa.qzap];
var qzut=qqPa.qzo(qzdu(qqPa.qzai.id));
if(qzut.Expanded&&qzut.ChildIndices.length>0){
return qzlf();
};
}
else if(qqPa.qzfw>0){
return qzjl();
};
return qqPa.qzai;
}
;
function qzer(qzya,qzAbh){
var qzhy=null,qzs=0;
if(qqPa.qzal.childNodes.length>qqPa.qzap+1&&qqPa.qzal.childNodes[qqPa.qzap+1].nodeName=='DIV'){
if(qqPa.qzal.childNodes.length>qqPa.qzap+2&&qqPa.qzal.childNodes[qqPa.qzap+2].nodeName=='DIV'){
qzs=qqPa.qzap+2;
qzhy=qqPa.qzal.childNodes[qzs];
}
else{
qzs=qqPa.qzap+1;
qzhy=qqPa.qzal.childNodes[qzs];
};
};
if(!qzhy){
return;
};
if(!qzya&&qzhy.style.display!='none'&&qzhy.childNodes.length>0){
qqPa.qzal=qzhy;
qqPa.qzai=qqPa.qzal.childNodes[0];
qqPa.qzap=0;
qqPa.qzfw++;
}
else if(qqPa.qzal.lastChild!=qzhy){
qqPa.qzap=qzs+1;
qqPa.qzai=qqPa.qzal.childNodes[qqPa.qzap];
}
else if(!qzAbh&&qqPa.qzfw>0){
for(var qzbc=qqPa.qzad;qzbc!=null;qzbc=qqPa.qzo(qzbc.ParentStorageIndex)){
if(!qzbc.qzvn()){
qzjl();
return qzer(true);
};
}
;
};
return qqPa.qzai;
}
;
function qzpp(){
var qzbu=document.getElementById(qqPa.TreeViewID+"_div");
qqPa.qzal=qzbu;
qqPa.qzai=qqPa.qzal.childNodes[0];
qqPa.qzap=0;
qqPa.qzfw=0;
return qqPa.qzai;
}
;
function ComponentArt_KeyMoveHome(){
var qzar=qqPa.qzai,qzaq=qzpp();
qzAgv(qzaq);
qzco(qzar,qzaq);
}
;
function ComponentArt_KeyMoveEnd(){
var qzar=qqPa.qzai,qzmd=qzpp(),qzst=null;
while(qzmd!=qzst){
qzmd=qzst;
qzst=qzer(true,true);
}
;
var qzaq=qzlf();
qzAgv(qzaq);
qzco(qzar,qzaq);
}
;
function ComponentArt_KeyMoveDown(){
var qzar=qqPa.qzai,qzaq=qzer();
qzAgv(qzaq);
qzco(qzar,qzaq);
}
;
function ComponentArt_KeyMoveUp(){
var qzar=qqPa.qzai,qzaq=qzub();
qzAgv(qzaq);
qzco(qzar,qzaq);
}
;
function ComponentArt_KeyMoveLeft(){
var qzss=qzvk(qqPa.qzai);
if(qzss&&qzss.style.display!='none'){
qzqp(qqPa,qzss,qqPa.qzad);
}
else{
var qzar=qqPa.qzai,qzaq=qzjl();
qzco(qzar,qzaq);
};
}
;
function ComponentArt_KeyMoveRight(){
if(qqPa.qzad.ChildIndices.length>0||(qqPa.qzad.ContentCallbackUrl&&qqPa.qzad.ContentCallbackUrl!='')){
var qzhy=qzvk(qqPa.qzai);
if(qzhy&&qzhy.style.display=='none'){
qzzn(qqPa,qzhy,qqPa.qzad,qqPa.qzfw);
}
else{
var qzar=qqPa.qzai,qzaq=qzer();
qzco(qzar,qzaq);
};
};
}
;
function qzco(qzar,qzaq){
qzar.onmouseout();
qqPa.qzfj.onmouseout();
if(qqPa.qzai){
qqPa.qzad=qqPa.qzo(qzdu(qqPa.qzai.id));
qqPa.qzfj=document.getElementById(qqPa.qzai.id+'_cell');
qzaq.onmouseover();
qqPa.qzfj.onmouseover();
};
qqPa.qzkj=1;
}
;
function qzAex(qzt,qzm,qzcd){
var qzar=qzt.qzai;
qzt.qzad=qzm;
qzt.qzai=qzcd;
qzt.qzal=qzcd.parentNode;
qzt.qzfw=qzm.qzcu;
for(var qzba=0;qzba<qzt.qzal.childNodes.length;qzba++){
if(qzt.qzal.childNodes[qzba]==qzcd){
qzt.qzap=qzba;
break;
};
}
;
qzt.qzfw=qzm.CalculateDepth();
qqPa=qzt;
qzco(qzar,qzcd);
}
;
function ComponentArt_SetKeyboardFocusedTree(qzAjw,qzwz){
if(qqPa&&qqPa==qzwz)
return;
if(qqPa){
var qzrr=document.getElementById(qqPa.TreeViewID+"_div");
if(qzrr)
qzrr.className=qqPa.CssClass;
};
qqPa=qzwz;
if(qzwz.FocusedCssClass!='')
qzAjw.className=qzwz.FocusedCssClass;
}
;
function ComponentArt_InitKeyboard(qzt){
var qzbu=document.getElementById(qzt.TreeViewID+"_div");
ComponentArt_SetKeyboardFocusedTree(qzbu,qzt);
qzt.KeyboardEnabled=true;
qzt.qzad=qzt.Nodes()[0];
qzt.qzfj=document.getElementById(qzt.TreeViewID+'_item_0_cell');
qzt.qzal=qzbu;
qzt.qzai=qzt.qzal.childNodes[0];
qzt.qzap=0;
qzt.qzfw=0;
ComponentArt_RegisterKeyHandler(qzt,'Enter','ComponentArt_SelectKeyItem()');
ComponentArt_RegisterKeyHandler(qzt,'(','ComponentArt_KeyMoveDown()');
ComponentArt_RegisterKeyHandler(qzt,'&','ComponentArt_KeyMoveUp()');
ComponentArt_RegisterKeyHandler(qzt,'\'','ComponentArt_KeyMoveRight()');
ComponentArt_RegisterKeyHandler(qzt,'%','ComponentArt_KeyMoveLeft()');
ComponentArt_RegisterKeyHandler(qzt,'$','ComponentArt_KeyMoveHome()');
ComponentArt_RegisterKeyHandler(qzt,'#','ComponentArt_KeyMoveEnd()');
document.onkeydown=ComponentArt_ProcessKeyPress;
}
;
function ComponentArt_SelectKeyItem(){
qzrb(qqPa,qqPa.qzad,qqPa.qzai,qqPa.qzfj);
}
;
var ComponentArt_TreeView_Keyboard_Loaded=true;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?