獲取元素的xpath, 轉換xpath為csspath進行jQuery元素獲取


Java代碼   收藏代碼
  1. var $shadow = new Object();  
  2.     /** 
  3.         獲取元素的xpath 
  4.         特性: 
  5.         - 轉換xpath為csspath進行jQuery元素獲取 
  6.         - 僅生成自然表述路徑(不支持非、或) 
  7.         @param dom {String/Dom} 目標元素 
  8.         @returns {String} dom的xpath路徑 
  9.     */  
  10.     $shadow.domXpath = function(dom) {  
  11.       dom = $(dom).get(0);  
  12.       var path = "";  
  13.       for (; dom && dom.nodeType == 1; dom = dom.parentNode) {  
  14.         var index = 1;  
  15.         for (var sib = dom.previousSibling; sib; sib = sib.previousSibling) {  
  16.           if (sib.nodeType == 1 && sib.tagName == dom.tagName)  
  17.             index++;  
  18.           }  
  19.         var xname =  dom.tagName.toLowerCase();  
  20.         if (dom.id) {  
  21.           xname += "[@id=\"" + dom.id + "\"]";  
  22.         } else {  
  23.           if (index > 0)  
  24.             xname += "[" + index + "]";  
  25.         }  
  26.         path = "/" + xname + path;  
  27.       }  
  28.         
  29.       path = path.replace("html[1]/body[1]/","html/body/");  
  30.         
  31.             return path;  
  32.     };  


Java代碼   收藏代碼
  1. /** 
  2.             根據xpath獲取元素 
  3.             特性: 
  4.             - 轉換xpath為csspath進行jQuery元素獲取 
  5.             - 僅支持自然表述(不支持非、或元素選取) 
  6.             @param xpath {String} 目標元素xpath 
  7.             @returns {jQuery Object} 元素/元素集合 
  8.     */  
  9.     $shadow.xpathDom = function(xpath){  
  10.             // 開始轉換 xpath 為 css path  
  11.             // 轉換 // 為 " "  
  12.             xpath = xpath.replace(/\/\//g, " ");  
  13.             // 轉換 / 為 >  
  14.             xpath = xpath.replace(/\//g, ">");  
  15.             // 轉換 [elem] 為 :eq(elem) : 規則 -1  
  16.             xpath = xpath.replace(/\[([^@].*?)\]/ig, function(matchStr,xPathIndex){  
  17.                     var cssPathIndex = parseInt(xPathIndex)-1;  
  18.                     return ":eq(" + cssPathIndex + ")";  
  19.             });  
  20.             // 1.2 版本后需要刪除@  
  21.             xpath = xpath.replace(/\@/g, "");  
  22.           // 去掉第一個 >  
  23.           xpath = xpath.substr(1);  
  24.           alert(xpath);  
  25.                 // 返回jQuery元素  
  26.           return $(xpath);  
  27.     };  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM