2

すべての接続の [Prop] ボタンをクリックするサイト Lift.do 用の短い Greasemonkey スクリプトをまとめようとしています。これらは Facebook の「いいね」ボタンのように機能し、オンとオフを切り替えることができます。

問題は、ページをリロードするときに、スクリプトが以前にアクティブ化したボタンを非アクティブ化することです。では、非アクティブな「Prop」ボタンのみを対象とするようにスクリプトを変更するにはどうすればよいでしょうか?

このページの Brock Adams のチュートリアルをガイドとして使用しました - AJAX 主導のサイトで適切なコントロールを選択してアクティブ化する- 実際、以下のほとんどすべては、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);
}

URL のソースをコピーして、ここに掲載しました: http://pastebin.com/mfF8tbdC。ただし、アクティビティ フィードのコンテンツは AJAX 経由で入ってくるように見えるため、それがどれほど役立つかはわかりません。

私が取り組もうとしている URL は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>

これら 2 つの CSS パスは同じです。では、waitForKeyElements を使用して 2 つを区別するにはどうすればよいでしょうか。非アクティブな小道具ボタンのみをターゲットにする方法は?

4

1 に答える 1

1

これを試して:

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

ここでの最初のパラメーターは、jquery セレクターのように機能します。次のことがわかります。

  • 「a」タグ (a)
  • 「アクションボタン」(.action-button)のクラスで
  • 「アクティブ」のクラスなし (:not(.active))

「。」に注意してください。character は、クラス識別子の CSS 表記です。

「not」の jquery リファレンスは次のとおりです: http://api.jquery.com/not-selector/

于 2013-08-24T19:32:52.530 に答える