单击链接内容中的greasemonkey链接

reb*_*bel 2 javascript greasemonkey

我有一个链接,我需要点击使用greasemonkey <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 );
Run Code Online (Sandbox Code Playgroud)

这个目前适用于带有ID,类等的链接(对不起所有的大写,但它只是为了引起对该区域的注意)

感谢任何帮助,我不是那么先进的JavaScript

Reblerebel

Bro*_*ams 6

而不是使用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;
Run Code Online (Sandbox Code Playgroud)


或者,如果链接操作由页面的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);
Run Code Online (Sandbox Code Playgroud)

评论更新:

总是只有一个链接?链接总是以" / attack/index / " 开头吗?

如果是这样,那么你可以使用:

var attackLink          = $("a[href^='/attack/index/']");
Run Code Online (Sandbox Code Playgroud)

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

选择目标页面的元素是一门艺术,并且具有高度特定的页面.
jQuery使CSS类型选择更容易; 这是一个方便的jQuery选择器引用.