Harc a türelmetlen felhasználóval
A Twitter a sírba visz. Az egy dolog, hogy folyton kijelentkeztet, de mióta telepakolták rohangáló szövegekkel a főoldalt, vagy fél percen át tölti a szkripteket, amik közül úgy tűnik a login panelé az utolsó. Így rákattintva a böngésző átdob a bejelentkező oldalra, ahol már nem tölti ki automatikusan, s írhatom be kézzel. Hogyan csinálhatná okosabban a csiripelde?
Ha teljesítménynövelésről esik szó, szinte kötelezően elhangzik a JavaScript hivatkozások forrás végére helyezése. Ezzel nincs is semmi gond, azonban ez azzal jár, hogy eseménykezelőink csak késéssel jutnak érvényre, a türelmetlen felhasználó pedig az alapértelmezett eseménnyel fog csak találkozni.
A fenti problematikára kíván megoldással szolgálni ClickCatcher elnevezéssel Robert Nyman natív JavaScript, David Billskog pedig jQuery alapon.
A kódot a <head>
-ben kell elhelyezni, betöltését követően elkapja az összes kattintást, és azokat, melyekhez saját eseménykezelőt kívánunk csatolni, várakoztatja egészen addig, míg az ezeket tartalmazó kód be nem töltődik, miután a szűrőt eltávolítja, és végül ismét kiváltja a kattintásokat a feltartóztatott elemeken.
(function () {
var QUEUE = {
clicks: [],
click_handler: function (evt) {
if ($(evt.target).hasClass("guarded")) {
QUEUE.clicks.push({
evt: evt,
target: evt.target
});
return false;
}
return true;
}
};
$(document).bind("click", QUEUE.click_handler);
$(document).ready(function () {
setTimeout(function () {
$(document).unbind("click", QUEUE.click_handler);
for (var i = 0, il = QUEUE.clicks.length; i < il; i++) {
$(QUEUE.clicks[i].target).click();
}
}, 0);
});
})();
Tömörsége miatt fent a jQuery megvalósítás olvasható, ennek természetesen megvan az a hátránya, hogy előtte a keretrendszert is be kell tölteni.
A kód érdekessége a setTimeout()
használata: mint az kiderült, második argumentumát 0-nak adva elérhetjük, hogy függvényünk a load eseménykezelők közül utolsónak fusson.
Jóde ez mennyivel növeli a
Amúgymeg használj a Twitter API-ra épülő appot twitteléshez.
Növeli