如何使用Greasemonkey隐藏XPath元素?

时间:2014-11-12 07:35:17

标签: javascript xpath greasemonkey tampermonkey

我有一个XPath /html/body/div[1]/div/div/center[1]/table,我希望它能让它不再可见。

我看到我可以使用document.evaluate(),但我不确定如何隐藏它。

1 个答案:

答案 0 :(得分:2)

如果您坚持使用XPath,对于单个节点,使用FIRST_ORDERED_NODE_TYPE ,如下所示:

var targEval = document.evaluate (
    "/html/body/div[1]/div/div/center[1]/table",
    document.documentElement,
    null,
    XPathResult.FIRST_ORDERED_NODE_TYPE,
    null
);
if (targEval  &&  targEval.singleNodeValue) {
    var targNode  = targEval.singleNodeValue;

    // Payload code starts here.
    targNode.style.display = "none";
}



但是,XPath选择器在用户脚本中非常脆弱。 {$ 3}}你最好离开using a CSS selector in most cases. 由于没有提供HTML,这里显示了 CSS-selector方法,并将该XPath转换为CSS选择器:

var targNode = document.querySelector ("body > div:nth-of-type(1) > div > div > center:nth-of-type(1) > table");
if (targNode) {
    targNode.style.display = "none";
}



当然,使用jQuery更简单

$("body > div:first > div > div > center:first > table").hide ();

或可能:

$("body > div:first > div > div > center:first > table").first ().hide ();



如果通过AJAX添加节点,请使用this answer中的技术。