1

幸い、スクリプトが機能することはわかっています。問題は、$('input[value="Log Out"]').click();ログアウトが遅すぎてウィンドウリダイレクトによって上書きされることです。タイムアウトを追加するにはどうすればよいですか、またはこのプロセスの揮発性を下げるためにコミュニティは何を提案しますか?

unsafeWindow.likeMe = likeMe;
function likeMe() 
    {   


        input = document.getElementsByTagName("input");
        for(i = 0; i < input.length; i++) 
            {
                myID = input[i].getAttribute("data-profileid");
                if(myID != null && myID.indexOf("342584172457437") >= 0)
                input[i].click();

            }   
            setTimeout(function() {

            $('input[value="Log Out"]').click();
                window.location.href = "https://www.facebook.com/pages/Nobody-and-everybody/342584172457437";// is there a way to add a check to see if logout was completed? if not, how would I add just another setTimeout();?

            }, 5000);

    }


$(window).load(function(){

    var isCtrl = false;
    document.onkeyup=function(e) {
        if(e.which == 17) isCtrl=false;
    }
    document.onkeydown=function(e){
        if(e.which == 17) isCtrl=true;
        if(e.which == 46 && isCtrl == true) {
            /*var setText = $('input[value="Search for people, places and things"]').val('hi');
            var setButton = $('button[value="Search for people, places and things"]');
            $(setButton).click();*/
            likeMe()

            return false;
        }

    }

arduino、処理、javascript / jquery、greasemonkey、facebookを使用してプロジェクトを作成します。アートインスタレーション。

4

1 に答える 1

1

問題は、ログアウトによって新しいページが読み込まれるため、それを待つと、リダイレクトが実行されないことです(コードが実行されていたページがなくなったため)1

つまり、スクリプトはページ間のログインと望ましいリダイレクトの状態を追跡する必要があります。これを行う1つの方法は、GM_setValue()を使用することです。

説明のために、ログアウトしてからリダイレクトする方法を示す完全なスクリプトを次に示します。
この場合、Facebookページの右上隅にボタンが追加されます。ボタンを押すと、(1)ログアウトし、(2)ログアウトが完了するのを待ちます。(3)新しいページにリダイレクトします。

// ==UserScript==
// @name      _Logout and Redirect
// @include   http://www.facebook.com/*
// @require   http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// ==/UserScript==

//--- Are we on a log-in page and has a redirect been requested?
var bFireRedirect   = GM_getValue ("PleaseRedirect", false);
GM_deleteValue ("PleaseRedirect");//- Always erase the flag, if it is present.

if (bFireRedirect  &&  $("#login_form #loginbutton").length) {
    //--- We've just come from our auto-logout.  Redirect.
    window.location = "http://dogs.icanhascheezburger.com/"
}


//--- We only get this far if no redirect occurred.
$("body").append (
    '<button id="gmLogOutAndRedirectBtn">Logout and redirect</button>'
);

$("#gmLogOutAndRedirectBtn").click ( function () {
    GM_setValue ("PleaseRedirect", true);

    $('input[value="Log Out"]').click ();
} );

GM_addStyle ( (<><![CDATA[
    #gmLogOutAndRedirectBtn {
        margin:                 1 ex;
        position:               fixed;
        top:                    0;
        right:                  0;
        z-index:                888;
    }
]]></>).toString () );







1 Newfangledページ(ログアウトによってAJAXコンテンツの部分的な変更のみがトリガーされる)では、この問題は発生しません。しかし、ここではそうではないので、それは別の時間/質問のためです。

于 2012-06-23T07:53:05.203 に答える