繁体   English   中英

从链接内的内容中单击一个带有润滑脂猴子的链接

[英]Clicking a link with greasemonkey from the content inside link

我有一个链接,我需要使用滑脂monkey <a href="/attack/index/1016587">Attack This Player</a>单击该链接,该代码的作用是href可以根据页面而变化,并且唯一静态代码是“攻击此播放器”的文本

我目前有

function click_element(element)
{
    var event = document.createEvent("MouseEvents");
    event.initMouseEvent("click", true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    element.dispatchEvent(event);
    return;
};

click_element( document.evaluate("//a[I DON'T KNOW WHAT TO PUT HERE]",document,null,9,null).singleNodeValue );

这目前适用于具有ID,类等的链接(对所有大写字母表示抱歉,但仅是为了吸引对该区域的注意)

感谢您的帮助,我在JavaScript方面还不那么先进

Reblerebel

而不是使用XPath,而是使用jQuery-这样会更简单。

如果单击该链接只是将您带到适当的页面,则整个脚本可能很简单:

// ==UserScript==
// @name            Attack!
// @include         http://YOUR_SITE/YOUR_PATH/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// ==/UserScript==

//--- contains is case-sensitive.
var attackLink          = $("a:contains('Attack This Player')");

//--- "Click" the link the easy way.
window.location.href    = attackLink[0].href;


或者,如果链接操作是由页面的JavaScript控制的(根据给出的示例链接看来不太可能):

// ==UserScript==
// @name            Attack!
// @include         http://YOUR_SITE/YOUR_PATH/*
// @require         http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
// ==/UserScript==

//--- contains is case-sensitive.
var attackLink          = $("a:contains('Attack This Player')");

//--- Click the link if its action was overridden by JavaScript.
var evt                 = document.createEvent ("HTMLEvents");
evt.initEvent ("click", true, true);
attackLink[0].dispatchEvent (evt);

更新评论:

总是只有一个链接吗? 链接是否始终以“ / attack / index / ”开头?

如果是这样,则可以使用:

var attackLink          = $("a[href^='/attack/index/']");

如果更复杂,请打开另一个问题,并提供目标页面代码的完整详细信息。 链接到页面是最好的。

选择目标页面的元素是一种艺术,并且是特定于页面的。
jQuery使CSS类型选择变得更加容易。 这是一个方便的jQuery选择器参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM