gpt4 book ai didi

javascript - 我的用户脚本如何根据链接的文本获取链接?

转载 作者:行者123 更新时间:2023-11-29 10:20:53 24 4
gpt4 key购买 nike

给定目标页面上的 HTML:

<dd class="ddTit">
<a href="http://abc.xxx.com/54781.html" target="_blank">special text words</a>
</dd>

如何根据“特殊文本词”获取url,并在Greasemonkey脚本中进行点击?

我试过这个:

var textlink = document.querySelector ("dd.ddTit a[textContent*='special']");
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
textlink.dispatchEvent (clickEvent);

没有运气。

如何根据textContent进行选择,比如textContent包含special字样?

最佳答案

唉,你不能用 querySelector() 来做,因为 CSS selectors do not (yet) offer a content/text selector

这里有 3 种方法:

  1. 遍历有针对性的节点选择:

    var ddTitLinks  = document.querySelectorAll ("dd.ddTit a");

    for (var J = ddTitLinks.length - 1; J >= 0; --J) {
    var ddTitLink = ddTitLinks[J];
    //--- Case-insensitive search.
    if (/special text words/i.test (ddTitLink.textContent) ) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    ddTitLink.dispatchEvent (clickEvent);
    break;
    }
    }


  2. 使用 jQuery(一个强大的库,可以让你省去很多麻烦):

    // ==UserScript==
    // @name _Click Special link(s)
    // @include http://YOUR_SERVER.COM/YOUR_PATH/*
    // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    // ==/UserScript==

    //--- Note that contains() is CASE SENSITIVE.
    var specLink = $("dd.ddTit a:contains('special text words')");
    if (specLink.length) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    specLink[0].dispatchEvent (clickEvent);
    }


  3. 使用 XPath:

    //--- Note that contains() is CASE SENSITIVE.
    var specLinks = document.evaluate (
    "//dd[contains(@class, 'ddTit')]/a[contains(text(), 'special text words')]",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null
    );

    if (specLinks.snapshotLength) {
    var specLink = specLinks.snapshotItem (0);
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    specLink.dispatchEvent (clickEvent);
    }

关于javascript - 我的用户脚本如何根据链接的文本获取链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com