仅使用Greasemonkey定位非活动按钮

时间:2013-08-24 19:22:59

标签: javascript jquery html css greasemonkey

我正在尝试为网站Lift.do整理一个简短的Greasemonkey脚本,它将点击我所有的连接“Prop”按钮。这些功能类似于Facebook上的“喜欢”按钮 - 您可以打开和关闭它们。

问题是,当重新加载页面时,脚本将停用先前激活的按钮。那么如何修改脚本以仅定位非活动的“Prop”按钮?

我在本页面上使用了Brock Adams的教程作为指南 - Choosing and activating the right controls on an AJAX-driven site - 事实上,下面的大部分内容都是从StackExchange问​​题的答案中直接复制/粘贴的。

// ==UserScript==
// @name        Lift Propper
// @namespace   https://lift.do/app/activity
// @description Props friends' lifts automatically
// @include     https://lift.do/app/activity
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require     https://gist.github.com/raw/2625891/waitForKeyElements.js
// @version     1
// @grant       none
// ==/UserScript==

waitForKeyElements ("a.action-button", triggerMostButtons);

function triggerMostButtons (jNode) {

    triggerMouseEvent (jNode[0], "mouseover");
    triggerMouseEvent (jNode[0], "mousedown");
    triggerMouseEvent (jNode[0], "click"); //only needs click event, I think
    triggerMouseEvent (jNode[0], "mouseup");
}

function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}

我复制了网址的来源并将其放在这里:http://pastebin.com/mfF8tbdC,虽然我不知道有多少帮助,因为活动Feed的内容看起来像是通过AJAX进来的。

我正在尝试处理的网址是https://lift.do/app/activity,但这当然与我的特定帐户相关联。

这是我所针对的节点的html(来自firebug):

<a class="action-button prop-button" ng-class="{active: item.propId}" ng-click="prop(item.id, item.propId)" ng-show="item.proppable"></a>

这是处于活动状态的相同按钮:

<a class="action-button prop-button active" ng-class="{active: item.propId}" ng-click="prop(item.id, item.propId)" ng-show="item.proppable"></a>

这两个具有相同的CSS路径。那么我如何使用waitForKeyElements来区分这两者呢?如何仅定位非活动的Prop按钮?

1 个答案:

答案 0 :(得分:1)

试试这个:

waitForKeyElements ("a.action-button:not(.active)", triggerMostButtons);

这里的第一个参数就像一个jquery选择器。它发现:

  • “a”标签(a)
  • 使用“action-button”类(.action-button)
  • 没有“主动”类(:不是(.active))

请注意“。” character是类标识符的CSS表示法。

以下是“not”的jquery参考:http://api.jquery.com/not-selector/