[quote=legend4]gua bingung nih yg d jelasin bang kanal jadi kaya terbelit" jadi pusink deh gua:([/quote]
Ini saya coba buat jelasin bro
Dibawah ini adalah script asli random friend :
[spoiler]/*onload handler*/
function onProfileLoad() {
Ffetcher.init();
}
if (!attachOnLoadHandler(function(){onProfileLoad()})) window.onload = function(){onProfileLoad()};
/*RANDOMIZED FRIENDS*/
if (typeof Ffetcher == "undefined") { Ffetcher = {}; }
Ffetcher = {
friends: new Array(),
pages: null,
maxfriends: null,
container: null,
cached: new Array(),
display: 10,
init: function() {
var num=document.links;
for(var x=0;x<num.length;x++) {
if (num[x].href.match(/\/friends\/[\d]+?/)) {
var t=/\(([\d]+?)\)/;
this.maxfriends=t.exec(num[x].innerHTML)[1];
break;
}
}
this.pages=Math.floor(this.maxfriends/30);
var htm="<div id='fcontainer' class='boxcontent'></div>";
addBox("Friends",htm,"frbox",/commonbox[\s]*?moreabout/i);
document.getElementById("content_frbox").innerHTML+="<div class='viewall'><a href='javascript: void(Ffetcher.more())'>More Random Friends</a></div>";
this.container=document.getElementById("fcontainer");
this.fetch(0);
},
fetch: function(page) {
document.getElementById("frbox").childNodes[0].innerHTML="Friends Loading... Pls wait...";
processAjaxRequest("GET",TRACKER.base_domain+"/friends/"+pageOwnerID+"/"+page,true,null, "parseFriends",page);
},
show: function() {
this.container.innerHTML="";
this.friends.sort(randOrd);
for(var x=0;x<this.display;x++) {
this.container.innerHTML+=this.friends[x];
}
},
more: function() {
if(this.cached.length<(this.pages+1)) {
var temp;
do {
temp=Math.ceil(Math.random()*(this.pages));
}while(this.cached.toString().indexOf(":"+temp+":")!=-1);
this.fetch(temp);
}
else {
this.show();
}
}
};
function parseFriends(htm,page) {
if(!htm){
Ffetcher.fetch(page);
return;
}
var r= /search1\x22>[\S\s]+?paginglinksmodule\x22>([\S\s]+?)<div class=\x22paginglinksmodule/;
var temp=r.exec(htm)[1];
temp=temp.match(/<div class="flogriditem">[\S\s]+?<\/div>\n<\/div><\/div>/g);
for(var x=0;x<temp.length;x++) {
temp[x]=temp[x].replace("samsg_icon.gif>","samsg_icon.gif />");
temp[x]=temp[x].replace(/<a /g,"<a target=_blank ");
if(!temp[x].match("nophoto")) Ffetcher.friends.push(temp[x]);
}
Ffetcher.cached.push(":"+page+":");
document.getElementById("frbox").childNodes[0].innerHTML="Friends ";
Ffetcher.show();
}
[color=red]/*misc functions*/
function randOrd(){
return (Math.round(Math.random())-0.5);
}
function processAjaxRequest(type,url,cont,param,handler,handlerparam) {
//by marfillaster
//type 'POST' | 'GET'
//cont 'true' | 'false'
//param string | null
//handler string | null
//handlerparam string |null
if(handlerparam) handlerparam=","+handlerparam;
else handlerparam="";
var httprequest= window.XMLHttpRequest? new XMLHttpRequest():new ActiveXObject("Msxml2.XMLHTTP");
if(handler) eval("httprequest.onreadystatechange=function(){if (httprequest.readyState==4) {"+handler+"(httprequest.responseText"+handlerparam+");}}");
httprequest.open( type, url, cont);
if(type=="POST") {
httprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httprequest.setRequestHeader("Content-length", param.length);
httprequest.setRequestHeader("Connection", "close");
}
httprequest.send(param);
}[/color]
[color=blue]/*addbox*/
function addBox(head,code,id,siblingafter) {
/*
head:
html string title
null - no header bar
code:
html string content
id:
unique string css pointer
siblingafter:
regexp classname
'left' - mainbar column end
'right' - sidebar column end
*/
try {
var li=document.createElement("li");
} catch(e) {
var li=document.createElement("<li>");
}
if(!head) head="";
else head="<h2>"+head+"</h2>";
li.innerHTML="<div id=\""+id+"\" class=\"commonbox "+id+"\">"+
head+
"<div id=\"content_"+id+"\">"+
code+
"</div>"+
"</div>";
if(siblingafter=="left") getElementsByClass(/commonbox[\s]*?controlpanel/i,null,"DIV")[0].parentNode.parentNode.appendChild(li);
else if(siblingafter=="right") getElementsByClass(/commonbox[\s]*?friends/i,null,"DIV")[0].parentNode.parentNode.appendChild(li);
else {
var si=getElementsByClass(siblingafter,null,"DIV")[0];
si.parentNode.parentNode.insertBefore(li,si.parentNode);
}
}
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp(searchClass);
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}[/color][/spoiler]
Apabila kita menggunakan WVM maka, bagian yg berwarna [color=red]merah [/color] dan [color=blue]biru[/color] biasanya tidak diperlukan karena didalam file tracker JS kita udah ada bagian tersebut
Jadi akan tinggal seperti ini :
[spoiler]/*RANDOMIZED FRIENDS*/
if (typeof Ffetcher == "undefined") { Ffetcher = {}; }
Ffetcher = {
friends: new Array(),
pages: null,
maxfriends: null,
container: null,
cached: new Array(),
display: 10,
init: function() {
var num=document.links;
for(var x=0;x<num.length;x++) {
if (num[x].href.match(/\/friends\/[\d]+?/)) {
var t=/\(([\d]+?)\)/;
this.maxfriends=t.exec(num[x].innerHTML)[1];
break;
}
}
this.pages=Math.floor(this.maxfriends/30);
var htm="<div id='fcontainer' class='boxcontent'></div>";
addBox("Friends",htm,"frbox",/commonbox[\s]*?moreabout/i);
document.getElementById("content_frbox").innerHTML+="<div class='viewall'><a href='javascript: void(Ffetcher.more())'>More Random Friends</a></div>";
this.container=document.getElementById("fcontainer");
this.fetch(0);
},
fetch: function(page) {
document.getElementById("frbox").childNodes[0].innerHTML="Friends Loading... Pls wait...";
processAjaxRequest("GET",TRACKER.base_domain+"/friends/"+pageOwnerID+"/"+page,true,null, "parseFriends",page);
},
show: function() {
this.container.innerHTML="";
this.friends.sort(randOrd);
for(var x=0;x<this.display;x++) {
this.container.innerHTML+=this.friends[x];
}
},
more: function() {
if(this.cached.length<(this.pages+1)) {
var temp;
do {
temp=Math.ceil(Math.random()*(this.pages));
}while(this.cached.toString().indexOf(":"+temp+":")!=-1);
this.fetch(temp);
}
else {
this.show();
}
}
};
function parseFriends(htm,page) {
if(!htm){
Ffetcher.fetch(page);
return;
}
var r= /search1\x22>[\S\s]+?paginglinksmodule\x22>([\S\s]+?)<div class=\x22paginglinksmodule/;
var temp=r.exec(htm)[1];
temp=temp.match(/<div class="flogriditem">[\S\s]+?<\/div>\n<\/div><\/div>/g);
for(var x=0;x<temp.length;x++) {
temp[x]=temp[x].replace("samsg_icon.gif>","samsg_icon.gif />");
temp[x]=temp[x].replace(/<a /g,"<a target=_blank ");
if(!temp[x].match("nophoto")) Ffetcher.friends.push(temp[x]);
}
Ffetcher.cached.push(":"+page+":");
document.getElementById("frbox").childNodes[0].innerHTML="Friends ";
Ffetcher.show();
}
[/spoiler]
Jangan lupa untuk menambahkan bagian ini
[spoiler]Ffetcher.init();[/spoiler]
Didalam sini :
[spoiler]if (!attachOnLoadHandler(function(){onProfileLoad()})) window.onload = function(){onProfileLoad()};
[b]Ffetcher.init();[/b]
TRACKER.init();[/spoiler]
Untuk yg menggunakan WVM 2. yang tidak terdapat bagian ini :
[spoiler]function randOrd(){
return (Math.round(Math.random())-0.5);
}[/spoiler]
Kalo dalam WVM tidak ada fungsi tersebut, maka harus dicopy dibagian akhir script MISC FUNCTION
[spoiler]function randOrd(){
return (Math.round(Math.random())-0.5);
}
/*END MISC FUNCTIONS*/[/spoiler]
Mohon maaf kolo penjelasannya tambah membingungkan
Last edited by strezzpc (2008-06-17 00:37:01)