webForumDet fria alternativet

Alert Box Protection

JavaScript

3 svar · 337 visningar · startad av stattin

Medlem sedan jan. 2005713 inlägg
Frågan#1

Hej!

Jag hittade de här scriptet häromdagen:


(function(){
  var a=window.alert, c=0;
  window.alert=function(q){
    // Change the number below to the number of alert boxes to display before the warning is given.
    if (++c%5==0) {
      if (!confirm(q+'\nThere have been '+c+' alert boxes, continue displaying them?')) window.alert=function(){};
    } else a(q);
  }
})();

// This is only a test case. You can removed it.
for (var i=1; i<50; i++) {
  alert('This is an annoying loop of 50 alerts.\nEvery 5th alert you will have an option to exit.\n\n'+i);
}

//man skulle även kunna skriva 50 alert boxar på rad med samma resultat.

Det jag undrar är, hur funkar det?

1. Hur kan det känna av hur många alert boxar som visats?
2. Kan man göra på något liknande sätt för att känna av hur långt en for loop har gått?

Tack på förhand!

Medlem sedan juni 20019 519 inlägg
#2

1. skriptet har ++c vilket betyder ungefär: 'c=c+1'. Så den lägger på en 1:a för varje gång funktionen körs.
2. Du vet väl om hur lång loopen är är, beroende på om du vill visa det i procent eller inte är en enkel matte fråga.

Medlem sedan jan. 2005713 inlägg
#3

Ok jag kanske ska vara lite mer specifik över vilka delar jag inte fattar.

1. (function(){...})(); //I vilka fall börjar man en funktion på det sättet? Aldrig sett förut.
2. window.alert=function(q) //Vad bestämmer att q ska vara innehållet från alertboxen i loopen?

Medlem sedan juni 20019 519 inlägg
#4

q är ifrån funktionen alert([strong]'detta är q'[/strong]):

window.alert=function(q){
window.alert=function(){}

ger en tom funktion, dvs alert kommer aldrig att visa något. den kör en tom funktion.

267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)