给定目标页面上的 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 选择器(尚)不提供内容/文本选择器 https://stackoverflow.com/a/4561376/331508.
这里有 3 种方法:
-
循环遍历目标选择的节点:
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;
}
}
-
Use jQuery http://docs.jquery.com/Main_Page(一个强大的库可以让你免去很多悲伤):
// ==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);
}
-
使用 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)