MediaWiki-diskusjon:Gadget-contributions-summary.js
Siste kommentar: for 8 år siden av Jeblad i emnet Rapportert feil
Rapportert feil rediger
Det rapporteres en feil for denne funksjonen
TypeError: obj[names[x]] is undefined https://no.wikipedia.org/w/load.php?debug=true&lang=nb&modules=ext.gadget.contributions-summary&only=scripts&skin=vector&version=fefd83cfcecc Line 22
Feilen består i bruk av for-in på en array, som var gyldig tidligere. For-in skal kun brukes på props fra et objekt.
Funksjonen brukte tidligere try-catch for å unngå at feil propagerte, men disse er fjernet. Tror ikke det skal spille noen rolle her, få andre funksjoner vil bli påvirket.
Merk at forslaget til korrigert kode ikke er testet. — Jeblad 24. feb. 2016 kl. 10:59 (CET)
Forslag til korrigert funksjon |
---|
function contributionsSummary() {
var obj = {};
$("#bodyContent > ul").first().find("li > a[href*='/wiki/']").each(function(i, el) {
if (!obj[el.innerHTML])
obj[el.title] = { count : 0, href : el.href.substr(wgServer.length), content : el.innerHTML };
obj[el.title].count++;
});
var names = Array();
for (var x in obj) names.push(x);
names.sort(function(a, b){
if (/:/.test(a) == /:/.test(b)) return a.localeCompare(b);
else if (!/:/.test(a) && /:/.test(b)) return -1;
else if (/:/.test(a) && !/:/.test(b)) return 1;
});
var html = Array();
for (var i=0,l=names.length; i<l; i++)
html.push(
'<span><a'
+ ' href="' + obj[names[i]].href.substr(wgServer.length) + '"'
+ ' title="' + names[i] + '"'
+ '>' + obj[names[i]].content + '</a>'
+ ' (' + obj[names[i]].count + ')</span>');
$("#bodyContent").append('<div class="contributions-summary"><a href="/wiki/Wikipedia:Contributions">Sammendrag</a>: ' + html.join(', ') + '</div>');
}
if (!mw.config.get('wgIsArticle') && mw.config.get('wgNamespaceNumber')==-1 && mw.config.get('wgCanonicalSpecialPageName')=="Contributions") {
$(contributionsSummary);
}
|
- Må nok oppdateres en gang til, ser ut som om initialisering av indeksen til 0 falt ut. Min feil, jeg har endret forslaget. — Jeblad 24. feb. 2016 kl. 13:01 (CET)