Я не могу заставить это работать вообще.Я пытаюсь использовать результат xPath в качестве базового запроса для страницы из скрипта greasemonkey.
Код, который я использую:
var select=$tag('select');
this.basePath=xpath.single("/html/body/div/div/div/div",document);
// - /html/body/div/div/div/div/div[2]/div/div[2]/div[2]/table/tbody/tr/th[2]/a
if(select.length>0){
this.location=xpath.single("/div[2]/div/div[2]/div[2]/table/tbody/tr/th[2]/a",this.basePath);
console.log('location: '+this.location.singleNodeValue.textContent);
}
Функции xPath:
var xpath=function(){
return {
single:function easyXPath(path,baseNode){
if(baseNode===undefined||!isHTML(baseNode)){
baseNode=document;
}
return document.evaluate(path,baseNode,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);
},
count:function easyXPathCount(path,baseNode){
if(baseNode===undefined||!isHTML(baseNode)){
baseNode=document;
}
return document.evaluate("count("+path+")",baseNode,null,XPathResult.NUMBER_TYPE,null).numberValue;
},
number:function easyXPathNumber(path,baseNode){
if(baseNode===undefined||!isHTML(baseNode)){
baseNode=document;
}
return document.evaluate(path,baseNode,null,XPathResult.NUMBER_TYPE,null).numberValue;
},
multi:function easyXPathMultiNode(path,baseNode){
if(baseNode==undefined||!isHTML(baseNode)){
baseNode=document;
}
return document.evaluate(path,baseNode,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
}
};
}();
function isHTML(node){
return node instanceof HTMLElement || node instanceof Element;
}
Я оставил полный путь к элементу, который пытаюсь достичь, и в крайнем случае я просто добавлю базовый путь к следующим путям