- document.onkeydown = function(e){
- if(e){
- event = e;
- }
- if(event.keyCode == 13){
- elem = event.srcElement || event.target;
- var nEo = new eo(elem);
- nEo.isStart = true;
- window.status = "";
- var _sDate = new Date().getTime();
- getElem(nEo,event);
- window.status = "查询dom耗时:"+(new Date().getTime()-_sDate);
- }
- }
- var eo = function(n){
- this.node = n;
- this.isStart = false;
- this.setStart = function(b){
- this.isStart = b;
- }
- }
- function getElem(eo,event){
- var node = eo.node;
- if(!eo.isStart){// 如果是元素不是开始位置
- if(findSelf(node,event)){
- return true;
- };
- }
- if(findChild(node,event)){
- return true;
- }
- if(findNext(node,event)){
- return true;
- }
- if(findParentNext(node,event)){
- return true;
- }
- return false;
- }
- function findSelf(node,event){
- if(isNode(node)){
- if(checkElement(node)){
- event.cancelBubble = true;
- event.returnValue = false;
- if(node.select){
- node.select();
- }
- node.focus();
- node.click();
- return true;
- }
- }
- return false;
- }
- function findChild(node,event){
- if(isNode(node)){
- if(node.childNodes){
- return getElem(new eo(node.childNodes[0]),event);
- }
- }
- return false;
- }
- function findNext(node,event){
- if(isNode(node)){
- if(node.nextSibling){
- return getElem(new eo(node.nextSibling),event);
- }
- }
- return false;
- }
- function findParentNext(node,event){
- if(isNode(node)){
- if(node.parentNode.nextSibling){
- return getElem(new eo(node.parentNode.nextSibling),event);
- }
- }
- }
- function checkElement(elem){
- if(elem==null || elem.nodeType!=1 || (elem.nodeType==1 && (elem.tagName!="INPUT" || (elem.tagName=="INPUT" && (elem.offsetHeight==0 || elem.type == "hidden" || elem.attributes.getNamedItem("skip")=="true" || elem.readOnly==true))))){
- return false;
- }else{
- return true;
- }
- }
- function isNode(node){
- if((node!=null || node!="") && typeof node !="undefined"){
- return true;
- }
- return false;
- }
- //该片段来自于http://www.codesnippet.cn/detail/211020136544.html
来源: http://www.codesnippet.cn/detail/211020136544.html