2012-06-23 5 views
1

다행히도 스크립트가 작동한다는 것을 알고 있습니다. 문제가 발생하면 $('input[value="Log Out"]').click(); 로그 아웃이 너무 느리고 창 리디렉션에 의해 무시됩니다. 추가 시간을 어떻게 추가 할 수 있습니까? 또는 커뮤니티가이 프로세스의 변동성을 줄이기 위해 제안하는 것은 무엇입니까?jQuery를 사용하여 로그 아웃 및 리디렉션


아두 이노, 처리, 자바 스크립트/JQuery와, 그리스 몽키와 페이스 북을 사용하여 프로젝트를 생성

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; } } 
. 아트 설치. (- 코드가 실행되었다 - 사라 페이지가 있기 때문에) 1

+1

로그 아웃 이벤트가 완료되면 리디렉션 만하면됩니다. 동시에 시작하지 마십시오. – slash197

+0

그래,이 정도를 알았습니다. 문제는 setTimeout이 시퀀스의 마지막 코드 줄이라는 것입니다. 다른 5 초 시간을 추가하는 방법이나 로그 아웃이 완료 될 때 테스트하는 방법에 대한 통찰력을 얻으시겠습니까? –

+2

코드에서 로그 아웃 과정과 관련된 것이 없습니다. – slash197

답변

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 신기한 것을 좋아하는 페이지 - 로그 아웃 단지 일부 AJAX 내용의 변화를 트리거 -이 문제가되지 않습니다. 그러나 그것이 여기에 해당하지 않기 때문에, 그것은 또 다른 시간/질문입니다.

+0

보안 문제 때문에이 작업을 수행했다고 생각하십니까? 부분적인 페이지 업데이트 일 때 어떻게 알 수 있습니까? URL 확장 때문에? btw는 놀랍게도 당신의 지원 brock에 대해 당신에게 정말 감사했습니다! 또한, 왜 이것을 아십니까? lol –

+0

보안 문제가 없습니다. 실제로는 가장 오래되고 간단한 프로그램 방법입니다.AJAX 접근법은 여전히 ​​소수에 불과합니다. NET 요청을 모니터링하고 브라우저의 [page/tab "throbber"] (http://img249.imageshack.us/img249/5420/001busytab.jpg)가 빙빙 돌리기 시작 하는지를보고 전체 페이지 대 AJAX인지 확인할 수 있습니다 (일반적으로 AJAX에는 해당되지 않습니다). –

관련 문제