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