[b][u]Perhatian[/u] :[/b] Abang buatkan tutorial ini [b]khusus[/b] bagi kalian yang :
[b]1. Menggunakan On Error JS linker.
2. One Column JS by Bro Nopathz.
3. Minimize Maximize.
4. WVM tentunya.[/b]
Abang buat tutorial ini karena JS linker on error itu akan membuat JS kalian loading terus2an (multiple loading) sehingga membuat box kalian double bahkan triple atau lebih. Biar scriptnya tidak multiple loading, kita harus mengakali susunan JS kita yg baku. OK abang akan buatkan script JS baku sederhana yg mencakup ke 4 script diatas (disini abang pakai WVM 2.3.5). Sengaja abang singkat scriptnya biar menghemat halaman. Biasanya susunan JS baku ini kalau pakai on error linker akan membuat script kita loading terus2an
[spoiler]//One Column Profile by bro Nopathz
function onProfileLoad() {
//Mini Masi FRIENDS
//Mini Maxi FANS
//Mini Maxi GROUPS
//Mini Maxi Tracker
}
/*TRACKER OBJECT*/
if (typeof TRACKER == "undefined") { TRACKER = {}; }
TRACKER = {
style: {
filter: "chroma(color='#FFFFFF')",
width: '285px',
height: '650px',
border: '0px',
overflow: 'hidden'
},
attributes: {
frameborder: '0',
allowtransparency: 'true'
},
phplink: "URL PHP",
exitmessage: "Thanks For Viewing "+pageViewerFName,
/*do not edit below this line*/
/*
WVMe Tracker Script
by: Ken marfilla,
http://profiles.friendster.com/mumbhaki,copyright 2007
Generated At,
http://chibibo.elementfx.com copyright 2008
Credits to: Friendster.com, Friendstertalk.com, Renalvir
http://renalvir.zuiken.net
licensed under GNU General Public License, version 2
http://www.gnu.org/licenses/gpl.html
Disclaimer: NO GUARANTEE and WARRANTY provided! For educational purposes only. Authors will not be liable of ANY damage through the use of this program
*/
base_domain: "http://profiles.friendster.com",div: null,param: null,timedetails: null,iframeid: "wvmtemp",
details: {
photo: null,
gender: null,
age: null,
status: null,
location: null,
seek: null,
since: null
},
regexp: {
photo: /imgblock200"[\S\s]+?img src="([\S\s]+?)"/i,
gender: />([\S]*male)/i,
age: /male, ([\d]*),/i,
status: /male, [\d]*, ([\S\s]+?)<\/span>/i,
location: /Location\: <\/span><a[\S\s]+?>([\S\s]+?)<\/a><\/li>/i,
seek: /In\: <\/span>([\S\s]+?)<\/li>/i,
since: /Since\: <\/span>([\S\s]+?)<\/li>/i
},
init: function() {
document.getElementById("navBg").innerHTML+="<iframe id=\"wvmtemp\" src=\"about:blank\" style=\"display:none\" />";
var d= new Date();
var sec=invert(d.getTimezoneOffset()*60);
var hr=invert(d.getTimezoneOffset()/60);
this.timedetails="oss="+sec+"&osh="+hr;
var ifsrc=this.phplink+"?"+this.timedetails;
var atr="";
var sty="";
for (val in this.attributes) {
atr += val +"="+ this.attributes[val]+" ";
}
for (val in this.style) {
sty += val +":"+ this.style[val]+";";
}
try {this.div=document.createElement("<div>")}
catch(e){this.div=document.createElement("div")}
this.div.innerHTML="<center><iframe id=\"wvm\" "+atr+"src=\""+ifsrc+"\" style=\""+sty+"\"></iframe><br /><input type=\"button\" class=\"reloadbutt\" value=\"Refresh Tracker\" onclick=\"Reload();\" style=\"border: 1px #000000 solid; background-color: c9c9c9; margin: 3px;\"></center>";
if(pageViewerID!=pageOwnerID) if(pageViewerID!="")this.getDETAILS();
},
getDETAILS: function() {
processAjaxRequest("GET",this.base_domain+"/user.php?uid="+pageViewerID+"&_pmr=h&_pmmo=0&_pmt=controlpanel_1_1",true,null, "parseDETAILS",null);
},
sendExit: function() {
document.getElementById(this.iframeid).src=this.phplink+this.param+"&exit=1";
alert(this.exitmessage);
}
};
function parseDETAILS(htm) {
if(!htm) {
TRACKER.getDETAILS();
return;
}else {
for (val in TRACKER.details) {
try {
TRACKER.details[val]=encodeURIComponent(new RegExp(TRACKER.regexp[val]).exec(htm)[1]);
}
catch(e) {
TRACKER.details[val]="";
}
}
TRACKER.param="?owner="+pageOwnerID+"&id="+pageViewerID+"&name="+pageViewerFName+"&url="+TRACKER.details.photo+"&gender="+TRACKER.details.gender+"&age="+TRACKER.details.age+"&status="+TRACKER.details.status+"&country="+TRACKER.details.location+"&seek="+TRACKER.details.seek+"&since="+TRACKER.details.since;
document.getElementById(TRACKER.iframeid).src=TRACKER.phplink+TRACKER.param;
}
}
/*END TRACKER OBJECT*/
if (!attachOnLoadHandler(function(){onProfileLoad()})) window.onload = function(){onProfileLoad()};
TRACKER.init();
if(pageViewerID!=pageOwnerID) if(pageViewerID!="") document.write("<body onbeforeunload='TRACKER.sendExit()'>");
/*MISC FUNCTIONS*/
function urlencode(txt) {
return txt.replace(/ /g,"%20").replace(/'/g,"%60").replace(/</g,"%3C").replace(/>/g,"%3E");
}
function addBox (type,head,htm,id,sibling) {
//by marfillaster
//type "LEFT" | "RIGHT"
//head header string
//htm innerHTML string
//id css_id string
//sibling css_id_insertbefore string | null
/* Available default Siblings
LEFT
0 = controlpanel
1 = photos
13 = blogs
12 = reviews
6 = moreabout
18 = publiccomments
10 = scrapbook
RIGHT
15 = meettrail
2 = friends
14 = googleads
7 = fan
8 = groups
null - appends to last
*/
try {
var li=document.createElement("li");
} catch(e) {
var li=document.createElement("<li>");
}
if(type=="LEFT") {
var ul=document.getElementById("0").parentNode.parentNode;
htm="<div class='boxcontent'>"+htm+"</div>";
}
else var ul=document.getElementById("2").parentNode.parentNode;
li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+
"<h2>"+head+"</h2>"+
"<div id='content_"+id+"'>"+
htm+
"</div>"+
"</div>";
if(sibling==null) ul.appendChild(li);
else {
sibling=document.getElementById(sibling).parentNode;
ul.insertBefore(li,sibling);
}
}
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);
}
function invert(x) {
if(x>0) return parseInt("-"+x);
else if(x<0) {
x=x+"";
return parseInt(x.substr(1,x.length-1));
}
return 0;
}
function randOrd(){
return (Math.round(Math.random())-0.5);
}
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;
}
/*END MISC FUNCTIONS*/
//tracker refresher
function Reload () {
var f = document.getElementById('wvm');
f.src = f.src;
}
//Mini Maxi CONTROLPANEL
//Mini Maxi PHOTOS
//Mini Maxi BLOGS
//Mini Maxi REVIEWS
/Mini Maxi MOREABOUT
//Mini Maxi PUBLICCOMMENTS
function show_hide(the_box) {
if (document.getElementById(the_box)) {
if (document.getElementById(the_box).style.display == 'none') {
document.getElementById(the_box).style.display = 'block';
}
else {
document.getElementById(the_box).style.display = 'none';
}
}
}[/spoiler]
Nah sekarang bagaimanakah mengakali agar script baku diatas itu tidak loading terus2an kalau kita pakai on error linker?
[b]1.[/b] Hapus JS one column profile milik bro Nopathz dan ganti dengan one column profile menggunakan CSS extension. Ini dia scriptnya dan tambahkan ke dalam CSS extensionmu :
[quote].commonbox{ position:relative; left:155px!important; overflow:hidden; width:490px}[/quote]
[b]2.[/b] Box yg ada di kanan (Friends, Fans dan Groups) pindahkan ke tengah pakai script sederhana JS extension box relocator. Disini abang pindahkan Friends dibawah CP. Fans dan Groups di bawah Testimonial. Taruh scriptnya didalam onload handler :
[spoiler]document.getElementById("0").parentNode.appendChild(document.getElementById("2"));
document.getElementById("18").parentNode.appendChild(document.getElementById("7"));
document.getElementById("7").parentNode.appendChild(document.getElementById("8"));[/spoiler]
[b]3.[/b] Pindahkan semua script Mini Maxi ke dalam onload handler (Bagian B). Kecuali script master Mini Maxinya. Jadi nanti susunan scriptnya akan menjadi :
[spoiler]function onProfileLoad() {
document.getElementById("0").parentNode.appendChild(document.getElementById("2"));
document.getElementById("18").parentNode.appendChild(document.getElementById("7"));
document.getElementById("7").parentNode.appendChild(document.getElementById("8"));
//Mini Masi FRIENDS
//Mini Maxi FANS
//Mini Maxi GROUPS
//Mini Maxi CONTROLPANEL
//Mini Maxi PHOTOS
//Mini Maxi BLOGS
//Mini Maxi REVIEWS
/Mini Maxi MOREABOUT
//Mini Maxi PUBLICCOMMENTS
//Mini Maxi Tracker
}
/*TRACKER OBJECT*/
if (typeof TRACKER == "undefined") { TRACKER = {}; }
TRACKER = {
style: {
filter: "chroma(color='#FFFFFF')",
width: '285px',
height: '650px',
border: '0px',
overflow: 'hidden'
},
attributes: {
frameborder: '0',
allowtransparency: 'true'
},
phplink: "URL PHP",
exitmessage: "Thanks For Viewing "+pageViewerFName,
/*do not edit below this line*/
/*
WVMe Tracker Script
by: Ken marfilla,
http://profiles.friendster.com/mumbhaki,copyright 2007
Generated At,
http://chibibo.elementfx.com copyright 2008
Credits to: Friendster.com, Friendstertalk.com, Renalvir
http://renalvir.zuiken.net
licensed under GNU General Public License, version 2
http://www.gnu.org/licenses/gpl.html
Disclaimer: NO GUARANTEE and WARRANTY provided! For educational purposes only. Authors will not be liable of ANY damage through the use of this program
*/
base_domain: "http://profiles.friendster.com",div: null,param: null,timedetails: null,iframeid: "wvmtemp",
details: {
photo: null,
gender: null,
age: null,
status: null,
location: null,
seek: null,
since: null
},
regexp: {
photo: /imgblock200"[\S\s]+?img src="([\S\s]+?)"/i,
gender: />([\S]*male)/i,
age: /male, ([\d]*),/i,
status: /male, [\d]*, ([\S\s]+?)<\/span>/i,
location: /Location\: <\/span><a[\S\s]+?>([\S\s]+?)<\/a><\/li>/i,
seek: /In\: <\/span>([\S\s]+?)<\/li>/i,
since: /Since\: <\/span>([\S\s]+?)<\/li>/i
},
init: function() {
document.getElementById("navBg").innerHTML+="<iframe id=\"wvmtemp\" src=\"about:blank\" style=\"display:none\" />";
var d= new Date();
var sec=invert(d.getTimezoneOffset()*60);
var hr=invert(d.getTimezoneOffset()/60);
this.timedetails="oss="+sec+"&osh="+hr;
var ifsrc=this.phplink+"?"+this.timedetails;
var atr="";
var sty="";
for (val in this.attributes) {
atr += val +"="+ this.attributes[val]+" ";
}
for (val in this.style) {
sty += val +":"+ this.style[val]+";";
}
try {this.div=document.createElement("<div>")}
catch(e){this.div=document.createElement("div")}
this.div.innerHTML="<center><iframe id=\"wvm\" "+atr+"src=\""+ifsrc+"\" style=\""+sty+"\"></iframe><br /><input type=\"button\" class=\"reloadbutt\" value=\"Refresh Tracker\" onclick=\"Reload();\" style=\"border: 1px #000000 solid; background-color: c9c9c9; margin: 3px;\"></center>";
if(pageViewerID!=pageOwnerID) if(pageViewerID!="")this.getDETAILS();
},
getDETAILS: function() {
processAjaxRequest("GET",this.base_domain+"/user.php?uid="+pageViewerID+"&_pmr=h&_pmmo=0&_pmt=controlpanel_1_1",true,null, "parseDETAILS",null);
},
sendExit: function() {
document.getElementById(this.iframeid).src=this.phplink+this.param+"&exit=1";
alert(this.exitmessage);
}
};
function parseDETAILS(htm) {
if(!htm) {
TRACKER.getDETAILS();
return;
}else {
for (val in TRACKER.details) {
try {
TRACKER.details[val]=encodeURIComponent(new RegExp(TRACKER.regexp[val]).exec(htm)[1]);
}
catch(e) {
TRACKER.details[val]="";
}
}
TRACKER.param="?owner="+pageOwnerID+"&id="+pageViewerID+"&name="+pageViewerFName+"&url="+TRACKER.details.photo+"&gender="+TRACKER.details.gender+"&age="+TRACKER.details.age+"&status="+TRACKER.details.status+"&country="+TRACKER.details.location+"&seek="+TRACKER.details.seek+"&since="+TRACKER.details.since;
document.getElementById(TRACKER.iframeid).src=TRACKER.phplink+TRACKER.param;
}
}
/*END TRACKER OBJECT*/
if (!attachOnLoadHandler(function(){onProfileLoad()})) window.onload = function(){onProfileLoad()};
TRACKER.init();
if(pageViewerID!=pageOwnerID) if(pageViewerID!="") document.write("<body onbeforeunload='TRACKER.sendExit()'>");
/*MISC FUNCTIONS*/
function urlencode(txt) {
return txt.replace(/ /g,"%20").replace(/'/g,"%60").replace(/</g,"%3C").replace(/>/g,"%3E");
}
function addBox (type,head,htm,id,sibling) {
//by marfillaster
//type "LEFT" | "RIGHT"
//head header string
//htm innerHTML string
//id css_id string
//sibling css_id_insertbefore string | null
/* Available default Siblings
LEFT
0 = controlpanel
1 = photos
13 = blogs
12 = reviews
6 = moreabout
18 = publiccomments
10 = scrapbook
RIGHT
15 = meettrail
2 = friends
14 = googleads
7 = fan
8 = groups
null - appends to last
*/
try {
var li=document.createElement("li");
} catch(e) {
var li=document.createElement("<li>");
}
if(type=="LEFT") {
var ul=document.getElementById("0").parentNode.parentNode;
htm="<div class='boxcontent'>"+htm+"</div>";
}
else var ul=document.getElementById("2").parentNode.parentNode;
li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+
"<h2>"+head+"</h2>"+
"<div id='content_"+id+"'>"+
htm+
"</div>"+
"</div>";
if(sibling==null) ul.appendChild(li);
else {
sibling=document.getElementById(sibling).parentNode;
ul.insertBefore(li,sibling);
}
}
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);
}
function invert(x) {
if(x>0) return parseInt("-"+x);
else if(x<0) {
x=x+"";
return parseInt(x.substr(1,x.length-1));
}
return 0;
}
function randOrd(){
return (Math.round(Math.random())-0.5);
}
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;
}
/*END MISC FUNCTIONS*/
//tracker refresher
function Reload () {
var f = document.getElementById('wvm');
f.src = f.src;
}
function show_hide(the_box) {
if (document.getElementById(the_box)) {
if (document.getElementById(the_box).style.display == 'none') {
document.getElementById(the_box).style.display = 'block';
}
else {
document.getElementById(the_box).style.display = 'none';
}
}
}[/spoiler]
Multiple loading JS kalian akan hilang dan JS linker on eror kalian akan dapat bekerja dengan sempurna. Selamat mencoba
Menurut bro Robin, penggunaan JS injection juga membuat JS kita loading terus2an. Solusinya adalah dengan menggunakan JS array sbg pengganti JS injectionnya
[quote]scriptFolder = '[b]
http://www.yourhost.com/yourusername/scriptFolder/[/b]'
scripts = new Array()
scripts[0] = '[b]wvmcbox.js[/b]'
scripts[1] = '[b]whorc.js[/b]'
scripts[2] = '[b]whatever.js[/b]'
for(x in scripts){
myscripts = document.createElement('script')
myscripts.src = scriptFolder+scripts[x]
document.getElementsByTagName('head')[0].appendChild(myscripts)}[/quote]
Last edited by KaNaLiTnUk (2008-08-01 11:04:00)