Xpath为<header>标记下的元素返回空值

时间:2019-07-24 16:45:12

标签: javascript google-chrome-extension

我正在使用Chrome扩展程序使用香草JavaScript,以根据用户类型隐藏页面的各个部分。用户类型在页面的部分中。我可以访问标记外部的元素,但不能访问标记内部的任何元素。

我尝试将范围ID与'// * [@ id =“ userType”]'结合使用,但这返回null。我也尝试访问标头中的其他元素(其他元素),但我也无法访问这些元素。我只能访问代码外部的元素。

html页面代码:

<body>
  <form id="form1">
    <header>
      <div>
        <span onclick="DP$LinkButton$Click(this, null, null, 'file.asp',null); return(false);
          <span id="userType">user1</span>
          <span id="userName">Bob</span>
        </span>
     </div>
    </header>
    <div>
    </div>
  </form>
</body>

xPath函数:

function getElementByXpath(path) {
  // returns the element value matching the Xpath
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 
} // end function getElementByXpath

xPath测试:

console.log(getElementByXpath('//*[@id="userType"]'));
console.log(getElementByXpath('//*[contains(@id,"userType")]'));
console.log(document.getElementById('userType'));
console.log(getElementByXpath("/html/body/form/header/div/span/span[@id='userType']"));

所有xPath查询均返回“ null”。我在xPath上使用.text()、. innerHTML,空白或只是整个标头尝试了console.log,它返回了'null'。我的xPath函数在header标记之外的其他元素上可以很好地工作。请帮忙!

0 个答案:

没有答案