משתמש:Mikimik/js/whatLinksHereCounter.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/* taken from [[User:Magister/monobook.js]] */
/* fixed and changed by [[User:Mikimik]] */
function parse ( markerid )
{
try {
var num;
var frame = document.getElementById("i" + markerid);
var whatlinkshere = frame.contentDocument.getElementById("mw-whatlinkshere-list");
if ( whatlinkshere ) num = whatlinkshere.getElementsByTagName("li").length;
else num = 0;
frame.parentNode.removeChild (frame);
document.getElementById(markerid).innerHTML = "(" + num + ")";
}
catch(e)
{
return; // lets just ignore what's happened
}
}
function checkWantedCounter ( article, markerid )
{
try {
var frame = document.createElement("iframe");
frame.id = "i" + markerid;
frame.src = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=special:whatlinkshere&target=" + article + "&limit=1000";
frame.setAttribute ( "onLoad" , "parse('" + markerid + "')");
frame.width = "0";
frame.height = "0";
document.body.appendChild (frame);
var aNode = document.getElementById(markerid);
aNode.innerHTML = "(...)";
aNode.href = frame.src;
}
catch(e)
{
return; // lets just ignore what's happened
}
}
function addWantedCounterLinks()
{
try {
if ( arguments.callee != addWantedCounterLinks ) return; /* if local function was reloaded let the newer function run */
var aList = document.getElementById("bodyContent")
// .getElementsByTagName("a"); <-- not good because list is changing as you add "a" nodes
.getElementsByClassName("new");
for ( var i = 0 ; i < aList.length ; i++ )
{
var sMarker = document.createElement("span");
sMarker.style.color = "green";
var aNode = document.createElement("a");
aNode.id = "sWLHmarker" + i;
aNode.href = "javascript:checkWantedCounter('" +
encodeWikiURL ( aList[i].href.replace( /^.*?\?title=(.+)&action=edit.*$/, "$1" ) ) +
"', '" + aNode.id + "');";
aNode.innerHTML = "^";
aNode.style.color = "inherit";
sMarker.appendChild (aNode);
insertAfter ( aList[i].parentNode, sMarker, aList[i] );
}
}
catch(e)
{
return; // lets just ignore what's happened
}
}
function encodeWikiURL ( url )
{
return encodeURIComponent ( url.replace(/ /g, "_") )
.replace(/%2F/ig, "/") // these chars are not encoded by wiki
.replace(/%24/ig, "$")
.replace(/%2C/ig, ",")
.replace(/%3A/ig, ":")
.replace(/%40/ig, "@");
}
function insertAfter ( parent, node, refNode )
{
if ( refNode.nextSibling ) parent.insertBefore (node, refNode.nextSibling);
else parent.appendChild(node);
}
addOnloadHook ( addWantedCounterLinks ); //if ( wgNamespaceNumber == 0 )