webForumDet fria alternativet

Alert Box Protection

3 svar · 337 visningar · startad av stattin

stattinMedlem sedan jan. 2005500 inlägg
#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!

voigtann1Medlem sedan juni 20018 810 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.

stattinMedlem sedan jan. 2005500 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?

voigtann1Medlem sedan juni 20018 810 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.

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb