【问题标题】:How can I click a <li> item with Greasemonkey?如何使用 Greasemonkey 单击 <li> 项目?
【发布时间】:2012-06-10 19:25:05
【问题描述】:
<ul class="myList clearfix" id="thismyList">
    <li class="myBullet" id="answer1">blabla1</li>
    <li class="myBullet" id="answer2">blabla2</li>
    <li class="myBullet" id="answer3">blabla3</li>
</ul>

在这个页面中,如何自动点击项目blabla2

【问题讨论】:

    标签: javascript html html-lists greasemonkey userscripts


    【解决方案1】:

    最短和最强大的可能是XPath 方式(顺便说一句,它是少数几个实际上非常好和有用的 w3 规范之一)。你几乎可以拥有任何你想拥有的条件。

    var xresult = document.evaluate("//*[text()='blabla2']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
    xresult.singleNodeValue.click();
    

    evaluate(), click()

    See this doc to know more about XPath in JavaScript.


    非 XPath 方法是手动遍历所有节点并搜索包含正确文本的第一个节点:

    var findElem = function(elems, text) {
        for (var i = 0; i < elems.length; i++) {
            if (elems[i].textContent == text) {
                return elems[i];
            } else {
                var result = findElem(elems[i].children, text);
                if (result != undefined) {
                    return result;
                }
            }
        }
        return;
    }
    
    findElem(document.documentElement.children, "blabla2").click();
    

    【讨论】:

    • 啊哈,这会更微妙一些,但仍然如此。等一下。
    • 感谢编辑的答案。我会试试看。但是我在页面上有不止一个“blabla2”。这会是个问题吗?
    • 你想如何确定正确的?通过 XPath,您几乎可以拥有任何想要拥有的条件。
    • 是的。当前版本寻找第一个 :)。
    • XPath 现在也应该有,我忘记了singleNodeValue 属性。我很高兴能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多