javascript - Vad anger den tredje parametern (false) i document.addEventListener("deviceready", OnDeviceReady, false);
Vad indikerar den tredje parametern (false) i
document.addEventListener("deviceready",OnDeviceReady,false);
Kan någon visa ett exempel på ett skript för att visa skillnaden
Svar #1
Detta är av historiska skäl. När webbläsarens händelsesystem först utformades fanns det två motstridiga sätt att modellera hur det fungerade. De kallades händelsefångst och händelsebubblande.
Ta till exempel detta HTML:
<html>
<body>
<a href="#">Content</a>
</body>
</html>
Om en händelse (t.ex. ett klick) sker på a-elementet, bör då förfäderna till elementet veta om det? Det var allmänt accepterat att de borde det. Men frågan var i vilken ordning de skulle informeras. Microsoft- och Netscape-utvecklarna (detta borde ge dig en uppfattning om hur historiskt vi talar!) hade skilda åsikter.
En modell var händelsefångst (förespråkad av Netscape-utvecklarna). Detta meddelade html-elementet först och arbetade sig ner genom trädet:
htmlbodya
Den andra modellen var händelsebubblande (förespråkad av Microsofts utvecklare). Detta meddelade mål-elementet först och arbetade sig upp genom trädet:
abodyhtml
Det slutgiltiga kompromissförslaget var att det skulle göra båda.
html(fångstfas)body(fångstfas)a(upptagningsfas)a(bubblande fas)body(bubblingsfas)html(bubblande fas)
Så händelsen arbetar sig ner genom trädet och sedan upp igen.
Detta är ett långrandigt sätt att komma till addEventListener. addEventListener lyssnar på både händelser i fångstfasen och bubblande fasen. Den tredje parametern (kallad useCapture i specifikationen) låter programmeraren ange vilken fas de vill använda.
I moderna webbläsare är detta som standard false. Du kommer troligen aldrig att stöta på ett tillfälle där du vill använda fångstfasen, särskilt eftersom Internet Explorer fortfarande inte stöder den. Men gamla webbläsare behöver att false anges uttryckligen, så det anges generellt för bakåtkompatibilitet.
Svar #2
Det är useCapture:
Om
true, indikeraruseCaptureatt användaren vill initiera avlyssning. Efter att ha initierat avlyssning kommer alla händelser av den specificerade typen att skickas till den registreradelistenerinnan de skickas vidare till någraEventTargetsom ligger under den i DOM-trädet. Händelser som bubblar uppåt genom trädet kommer inte att utlösa en lyssnare som är avsedd för avlyssning. Se DOM Level 3 Events för en detaljerad förklaring.
