2013-12-22 1 views
-4

이것은 내 greasemonkey 스크립트입니다. reddit 페이지를 열 때마다 자동으로 트리거하려고합니다. 원함 기능 up_vote_all() { vote_all ('화살표 업'); }페이지를 열 때마다 greasemonkey 스크립트를 자동 트리거하는 방법

메뉴 항목을 클릭하지 않고도 모든 페이지에서 자동으로 트리거됩니다. 감사

// ==UserScript== 
// @name   Reddit Mass Vote 
// @namespace  http://reddit.com 
// @description You can up vote or down vote all comments on any page instantly without having to click each arrow. This is mainly to be used against spammers and trolls. 
// @include  http://www.reddit.com/* 
// @include  http://reddit.com/* 
// ==/UserScript== 


GM_registerMenuCommand('Up Vote All', up_vote_all); 


// From http://snipplr.com/view/1696/get-elements-by-class-name/ 
function getElementsByClassName(classname, node) { 
    if(!node) node = document.getElementsByTagName("body")[0]; 
    var a = []; 
    var re = new RegExp('\\b' + classname + '\\b'); 
    var els = node.getElementsByTagName("*"); 
    for(var i=0,j=els.length; i<j; i++) 
    if(re.test(els[i].className))a.push(els[i]); 
    return a; 
} 

// From http://jehiah.cz/archive/firing-javascript-events-properly 
function fireEvent(element,event){ 
    if (document.createEventObject){ 
    // dispatch for IE 
    var evt = document.createEventObject(); 
    return element.fireEvent('on'+event,evt); 
    } 
    else { 
    // dispatch for firefox + others 
    var evt = document.createEvent("HTMLEvents"); 
    evt.initEvent(event, true, true); 
    return !element.dispatchEvent(evt); 
    } 
} 


function up_vote_all() { 
    vote_all('arrow up'); 
} 


function vote_all(class_name) { 
    arrows = getElementsByClassName(class_name); 
    for (var i = 0; i < arrows.length; i++) { 
     fireEvent(arrows[i], 'click'); 
    } 
} 

답변

-1

내가 그것을 발견, 내가

document.addEventListener("DOMContentLoaded", function() { 
    up_vote_all(); 
}); 

쉽게이었다 처음에이 명령을 삽입해야합니다.

+0

GreaseMonkey 위키에서 : "Greasemonkey 사용자 스크립트의 코드는 DOMContentLoaded 이벤트가 발생할 때 호출됩니다 (GM 0.8.6의 이벤트 캡처 중). 이것은 window.onload와 비슷한 Mozilla에서 구현 된 DOM 이벤트입니다. 그러나 전체 페이지 (이미지, 스타일 시트 등 포함) 대신 DOM로드 만 기다리기 때문에 곧 발생합니다. " 다른 말로하면, 제안 된 솔루션은 기본적으로 onPageLoaded (addEventListener ("onPageLoad"))를 말하고 있기 때문에 아무 것도 도움을주지 못하거나 실제로 실행되는 것을 막을 수 있습니다. –

+0

출처 : http://wiki.greasespot.net/DOMContentLoaded –

관련 문제