如何使用 Greasemonkey 隐藏 XPath 元素?

Bij*_*jan 1 javascript xpath greasemonkey tampermonkey

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

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

Bro*_*ams 5

如果您坚持使用 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";
}
Run Code Online (Sandbox Code Playgroud)



但是,XPath 选择器在用户脚本中非常脆弱。在大多数情况下,最好使用 CSS 选择器。
由于未提供 HTML,这里显示了 CSS 选择器方法,并将该 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";
}
Run Code Online (Sandbox Code Playgroud)



当然,使用 jQuery就更简单

$("body > div:first > div > div > center:first > table").hide ();
Run Code Online (Sandbox Code Playgroud)

或者可能:

$("body > div:first > div > div > center:first > table").first ().hide ();
Run Code Online (Sandbox Code Playgroud)



如果节点是通过 AJAX 添加的,请使用此答案中的技术。