Google Analytics mos kelmaydigan kuzatuvida poyga sharoitlaridan saqlanish

Mening ko'plab voqealarim (taxminan 20%) Google Analytics-da ro'yxatdan o'tmagan. Bu formlar joylashtirilgan rasm tugmasiga onclick bilan chaqiriladigan barcha voqealar. Kodning brauzer keyingi sahifaga o'tishidan oldin kodni Google'ga yuborish uchun etarli darajada tezkor ishlamayotganligiga ishonaman.

Men nima qilishni xohlasam, _gaq navbatining holatini tekshirib, Javascriptni tugatmasdan oldin hech qanday kutilmagan hodisalar mavjudligiga ishonch hosil qilish.

_gak menga bir oz mantiqiy tuyuladi, lekin uning ta'sir doirasi bor - u. Men oddiy buyruq bilan Chrome brauzerini sinab ko'rdim:

console.log(_gaq.u);

Afsuski, bu har doim _gaq.push buyrug'i bilan ishlayotgan bo'lsa ham, doimo 0 qaytadi. Albatta Chrome brauzeri har doim Google-ga yuborilgan xabarlarni olov yong'inlaridan oldin yuboradi, shuning uchun men hatto Chrome'da disk raskadrovka qila olmasligimga ishonchim komil emas, chunki bu muammoni takrorlay olmayman.

Hech kim biron-bir narsaga navbat bilan hisoblashni "_gaq" dan olish usulini biladimi? _Gaq.u mos mulkmi? Men o'zimning barcha voqealarimni kutib turishim bilan 100 yoki 200 milimetrlik masofani bosib o'tgandan ko'ra, biroz jozibali ishni qilmoqchiman.

1

1 javoblar

_gaq has 2 stages.

Birinchidan, uning qatori, ga.js dan oldin yuklangan bo'lsa, uning funktsiyalari nomlari yoki argumentlari yoki haqiqiy vazifalari mavjud.

Keyin, ga.js yuklarni yuklayotganida, u maxsus ob'ektga aylanadi, navbat (funktsiyalar chaqiriladi) va barcha keyingi _gaq.push() chaqiradi ular darhol o'tayotgan narsalarni amalga oshiring.

Hali ham navbatda turgan vaqtda _gaq - oddiy JavaScript-ni. Shunday qilib, _gaq.length bilan ishlashni kutayotgan elementlarning soniga kirishingiz mumkin. Navbati ishlov berilgandan keyin, navbatning hech qanday usuli yo'q.

onclick poyga holati holati keng tarqalgan. Ko'pgina odamlar asl harakatlarning oldini olish, tadbirlarni kuzatib borish va so'ngra original ishni yakunlovchi qisqa vaqt oralig'idagi setTimeout sozlash orqali uni atrofga olishni yaxshi ko'radi.

Mening afzalligim faqatgina analitiklar uchun foydalanuvchi tajribasini buzmaslikdir (va men buni hayot uchun qilaman). Shunday qilib, hal qilishim bilan onmousedown va onkeydown ni almashtirish (birgalikda) Men ularni preclick deb atayman, bu esa poyga holatini yo'q qiladi, faqatgina noto'g'ri pozitivlar bilan, bu veb-tahlil uchun etarli darajada.

JQuery'da misol keltirilgan:

$.fn.preclick = function(param) {
    if (!param) {
        return this.trigger("mousedown");
    }
    return this.one("keydown.preclick mousedown.preclick", function(e) {
        if (e.type === "mousedown" || e.which === 13) {
            param.apply(this);
        }
    });
};
4
qo'shib qo'ydi
@bkgraham yep. Apple-ning hujjatlarini tekshiring; u yaxshi ishlaydi developer.apple.com/ kutubxona/safari/# hujjatlar// hellip;
qo'shib qo'ydi muallif Yahel, manba
Ushbu holatdan qochish uchun sinxron kodni ishlatishga urindim. Sahifa tomosha qilish uchun asenkron kodni foydalanayapman, lekin tugma bosishida sodir bo'lgan barcha hodisalar sinxronlashtirilgan versiyadan foydalanib kodlangan. Buni Chrome-da sinab ko'rdim va u yaxshi ishladi (_getTracker-dan foydalanish uchun doimiy ogohlantirishlar mavjudligiga qaramay). Uni joylashtirish va uni bir necha kun davomida ishlatish, xatti-harakatlarning hech qanday o'zgarishiga olib keldi - voqealarning 20-25% ushlab turilmayapti. Sinxron kod nima uchun bu muammoni hal qilmaganligi haqidagi har qanday fikr? Men brauzerga xos bir muammo borligini tekshirish uchun hali tahlil qilmadim.
qo'shib qo'ydi muallif bkgraham, manba
Bundan tashqari, Yahelc, idevices-da, ayniqsa, iPad-da onmousedown va onkeydown voqealarini sinab ko'rdingizmi?
qo'shib qo'ydi muallif bkgraham, manba
Biz kutish bilan yakunlandi. Tanlov yo'q. Shuningdek, so'rovning foydalanuvchi agentini tekshiramiz va Safari uchun kutishni kengaytiramiz - 100 milodiy Safari uchun JSni ishlatish uchun etarli vaqt emas.
qo'shib qo'ydi muallif bkgraham, manba
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb