javascript - 从链接内的内容中单击带有greasemonkey的链接

标签 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 );

目前,这适用于带有 ids、类等的链接。 (抱歉全部大写,但这只是为了引起对该区域的注意)

感谢您的帮助 我在 JavaScript 方面没那么先进

叛逆者

最佳答案

不要使用 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 类型选择变得更容易;这是a handy jQuery selector reference .

关于javascript - 从链接内的内容中单击带有greasemonkey的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379507/

相关文章:

javascript - 在执行代码技术之前等待页面加载的用户脚本?

javascript - 创建预定的 Greasemonkey 脚本

javascript - angularjs 显示/隐藏标签,点击同一个标签隐藏内容

javascript - 为什么 JSON.parse 无法检测参数是否已经是 JSON 格式

javascript - AngularJS DatePicker 值返回未定义

javascript - 如何从字符串中分离数字和算术运算符?

javascript - 如何从 Greasemonkey 脚本拦截 XMLHttpRequests?

javascript - 在同一页面上多次运行 Greasemonkey 脚本?

javascript - 在 IE 7 的对象和特定子项的 CSS 中更改颜色

javascript - 使用 native JavaScript 动态更改 HTML 源?