Bookmarklet nima?
Bookmarklet — brauzerning “bookmark” (xatcho‘p) maydoniga joylangan, JavaScript kodining juda ixcham ko‘rinishi bo‘lib, uni bosganda brauzer sahifasining o‘zida amallarni bajaradi.
U alohida fayl yoki kengaytma o‘rnatishni talab qilmaydi: kod xatcho‘p ichida bo‘ladi va har safar bosilganda joriy sahifadagi DOM va brauzer imkoniyatlari bilan ishlaydi.
Qachon va qanday maqsadlarda ishlatiladi?
Bookmarklet odatda tezkor “sahifa ustida” bajariladigan vazifalar uchun qulay: masalan, tanlangan matnni yig‘ib olish, havolalarni formatlash, sahifadagi ba’zi elementlarni ajratib ko‘rsatish yoki tezkor ma’lumotni konsolga chiqarish.
U kengaytmaga o‘xshash kuchli bo‘lishi shart emas: maqsad — bitta sahifada bir-ikki bosqichli ishni tez bajarish. Natija brauzer xavfsizlik siyosati bilan cheklanadi (masalan, boshqa sayt ma’lumotiga kirish, CORS cheklovlari).
- Tezkor o‘zgartirish: sahifadagi elementlarni topish (querySelector va h.k.) va uslubini o‘zgartirish.
- Ma’lumot yig‘ish: sahifadagi matn/havolalarni chiqarib, yangi dialog yoki konsolga chiqarish.
- Qo‘shimcha kontekst: tashqi servisga yuborish uchun URL (query string) yig‘ish.
Tarix: “Bookmarklet” qayerdan kelgan?
Oldingi davr: xatcho‘p ichiga URL va skript qo‘yish g‘oyasi
Bookmarklet g‘oyasi xatcho‘plar “oddiy URL”dan tashqari maxsus sxemalar (ayrim brauzerlarda “javascript:” kabi) orqali kod ishga tushirishi mumkinligidan kelib chiqqan.
Bu yondashuv brauzerlar erta bosqichlaridan “bookmark”ni sahifaga tez murojaat qilish bilan cheklamasdan, kichik automatsiya uchun ishlatish imkonini berdi.
Amaliy natija: kengaytmalar paydo bo‘lgach, bookmarkletning o‘rni
Keyinchalik brauzer kengaytmalari (extension) joriy bo‘lib, murakkabroq funksiyalar, ruxsatlar (permissions), barqaror kod bazasi va versiyalash imkonini berdi.
Shunga qaramay, bookmarkletlar soddaligi sababli saqlanib qoldi: “o‘rnatmasdan” kodni bitta xatcho‘pga ulash mumkin, bu esa test, shaxsiy ish oqimi va tezkor prototiplashda foydali.
Ishlash mexanizmi: bosilganda nima bo‘ladi?
1-bosqich: xatcho‘p “javascript:” sxemasi bilan ishga tushadi
Bunday xatcho‘pning URL qismi odatda “javascript:” bilan boshlanadi. Brauzer xatcho‘p bosilganda, shu satrdagi JavaScriptni sahifa kontekstida bajaradi.
Natijada kod joriy sahifa’sining DOM’iga murojaat qilishi, masalan document.querySelector() orqali elementlarni topishi mumkin bo‘ladi.
2-bosqich: DOM bilan ishlash va natijani sahifada ko‘rsatish
Bookmarklet odatda quyidagi amallarni bajaradi: elementlarni tanlaydi, ulardan ma’lumot oladi, so‘ng foydalanuvchiga ko‘rsatadi yoki sahifani o‘zgartiradi.
Masalan, kod oynada xabar chiqarishi (alert()), konsolga yozishi (console.log()) yoki element uslubini (style) o‘zgartirishi mumkin.
- Tanlash:
document.querySelector()yokigetElementsByTagName(). - O‘qish:
textContent,href,dataset. - O‘zgartirish:
element.styleyoki klass qo‘shish (classList). - Chiqish: dialog (
alert) yoki yangi URL yig‘ish.
3-bosqich: xavfsizlik cheklovlari va kontekst
Bookmarklet brauzerning “same-origin” va ruxsatlar modeliga bo‘ysunadi. Ya’ni, brauzer sahifadagi kontent DOM’iga kirishga imkon beradi, lekin boshqa domenlardagi ma’lumotni bevosita o‘qishga doim ham ruxsat bermaydi.
Shuningdek, brauzerning pop-up siyosati va “mixed content” kabi holatlar ham ta’sir qilishi mumkin; shuning uchun tashqi so‘rovlar uchun odatda Fetch/XHR emas, URL query yig‘ish va navigatsiya usuli ko‘proq ishlatiladi.
Bookmarklet yaratish: aniq tuzilma
Eng asosiy format: “javascript:” + bitta satrli funksiya
Amaliy jihatdan bookmarklet ichida ko‘pincha “ixtiyoriy funksiya” emas, balki bevosita ishlaydigan bitta ifoda yoki qisqa funksion blok ishlatiladi.
Odatdagi skelet quyidagicha: javascript:(()=>{ ... })(). Bu yerda kod qisqa bo‘lishi va vergul/nuqta-vergul bilan to‘g‘ri ishlashi kerak.
Misol: sahifadagi barcha havolalarning sonini chiqarish
Quyidagi bookmarklet joriy sahifadagi <a> elementlari sonini chiqaradi. Uni xatcho‘p sifatida qo‘shishda “URL” maydoniga shuni joylash talab qilinadi.
javascript:(()=>{const n=document.links.length;alert('Havolalar: '+n);})()
Bu kod DOM’ga kiradi (document.links) va natijani foydalanuvchiga ko‘rsatadi.
Sozlash va foydalanish: amaliy qadamlar
Xatcho‘p qo‘shishning tipik tartibi
Bookmarkletni yaratishda siz brauzer “New bookmark” (yangi xatcho‘p) oynasidagi URL maydoniga “javascript:” bilan boshlangan kodni kiritasiz.
Nomini esa tushunarli bering: masalan “Link soni”, “Rasmni ro‘yxatga olish” kabi. Kod xatcho‘p ichida bo‘lgani uchun keyin uni tahrir qilish ham mumkin.
Tanlash mezonlari: qachon bookmarklet tanlash kerak?
Quyidagi holatlarda bookmarklet kengaytmadan tezroq yechim bo‘lishi mumkin: vazifa qisqa, bir necha sahifada ishlatish yetarli va o‘rnatish/yangilash jarayoni talab qilinmaydi.
Aksincha, murakkab UI, doimiy fonda ishlash, ruxsatlar (permissions) yoki ko‘p sahifali logika kerak bo‘lsa, kengaytma (extension) mantiqiyroq.
| Vaziyat | Bookmarklet mosmi? | Sabab |
|---|---|---|
| Bitta sahifada tezkor tekshiruv | Ha | Kod qisqa va DOM’ga bevosita ishlaydi |
| Turli domendagi ruxsatli so‘rovlar | Chegaralangan | Same-origin va CORS cheklaydi |
| Murakkab interfeys va sozlamalar | Yo‘q | Kengaytma UI va saqlash mexanizmlari bilan qulayroq |
| Tez-tez ishlatiladigan bir xil “ish oqimi” | Ha | O‘rnatmasdan qayta bosiladi |
Tipik xatolar va qanday tuzatish kerak
- Juda uzun kod: brauzer xatcho‘p URL maydonida uzunlik cheklovi bo‘lishi mumkin. Kodni ixchamlang yoki eng muhim qismni qoldiring.
- Vergul/nuqta-vergul xatosi: bitta satrda ifodalar noto‘g‘ri ajralsa, butun bookmarklet ishlamay qoladi. Oddiy qilib tekshirib chiqing.
- “document” topilmasa: kod noto‘g‘ri kontekstda bajarilsa (masalan iframe alohida sahifa bo‘lsa), DOM’ga kirish kutilgandek bo‘lmasligi mumkin. Sahifada kutilgan elementlar bor-yo‘qligini tekshiring.
- Popup bloklanishi:
alertodatda chiqadi, lekin boshqa navigatsiyalar yoki oynalar brauzer siyosatiga bog‘liq. Natijani DOM’ga yozib ko‘rish ko‘pincha barqarorroq.
Qiyoslash: bookmarklet vs kengaytma
Asosiy farqlar
Bookmarklet xatcho‘pga joylanadi va foydalanuvchi bosganda ishlaydi; kengaytma esa odatda o‘rnatiladi, fonda ishlashi va “permissions” orqali ko‘proq imkoniyatga ega bo‘ladi.
Quyidagi jadvalda farqlar aniqroq ko‘rsatilgan.
| Kriteriy | Bookmarklet | Kengaytma |
|---|---|---|
| O‘rnatish | Talab qilinmaydi (xatcho‘p yetadi) | O‘rnatish va yangilash kerak |
| Kod ko‘lami | Juda ixcham bo‘lishi kerak | Katta loyiha bo‘lishi mumkin |
| Foydalanish vaqti | Pechadan keyin bosilganda | Eventlar bo‘yicha avtomatik ham ishlashi mumkin |
| Ruxsatlar | Brauzer xavfsizligi bilan cheklanadi | Permissions orqali aniq nazorat |
| UI | Cheklangan (dialog, DOM’ga yozish) | Panel, menyu, kontent skriptlari bilan qulay |
FAQ
Bookmarklet brauzer oynasini “almashtirib” ishlaydimi?
Ko‘pincha yo‘q. Kod odatda joriy sahifa kontekstida ishlaydi va DOM’ni o‘zgartiradi yoki ma’lumot chiqaradi. Faqat kod ichida aniq navigatsiya (masalan location.href o‘zgartirish) qilinsa, sahifa almashadi.
Bookmarklet faqat bir xil brauzerda ishlaydimi?
JavaScript bo‘lgani uchun u ko‘p brauzerda ishlashi mumkin, ammo xatcho‘p URL maydonidagi format va “javascript:” sxemasi brauzer siyosatiga bog‘liq bo‘lishi mumkin. Eng to‘g‘ri yo‘l — o‘zingiz ishlatadigan brauzerda sinovdan o‘tkazish.
Bookmarklet boshqa domen sahifasining ma’lumotiga kiradimi?
Har doim ham emas. Same-origin va brauzer xavfsizlik siyosati tufayli boshqa domenning DOM’iga yoki ma’lumotiga bevosita kirish cheklanishi mumkin. Agar maqsad URL yig‘ish va boshqa sahifaga navigatsiya bo‘lsa, u ishlashi ehtimoli yuqoriroq.
Bookmarkletni bekor qilish yoki qaytarish mumkinmi?
Bookmarklet kodida siz DOM’ga qilgan o‘zgarishlarni “reverse” qilish logikasini o‘zingiz yozmasangiz, avtomatik bekor qilish bo‘lmaydi. Masalan, rangni o‘zgartirsangiz, avvalgi uslub qiymatini saqlab, keyin tiklash kerak.
Bookmarklet ishlamay qolsa, qayerdan sababni topaman?
Birinchi qadam — brauzer konsolida xatoni tekshirish. Bookmarklet ichida sintaksis xatosi, element topilmasa (nullga murojaat), yoki navigatsiya/pop-up bloklanishi bo‘lishi mumkin. Konsol xatosi yo‘nalishni tez beradi.
Bookmarklet bilan xatoliklar xavflimi (xavfsizlik jihati)?
Bookmarklet — JavaScript kod. Shuning uchun ishonchsiz manbadan nusxa ko‘chirib ishlatmaslik kerak. Kod zararli yo‘naltirish yoki foydalanuvchi harakatini soxtalashtirishga urinishi mumkin; ayniqsa location va DOM orqali amalga oshiriladigan amallarga ehtiyot bo‘ling.
Xulosa
Bookmarklet — xatcho‘p ichiga joylangan JavaScript bo‘lib, brauzerda sahifani qo‘lda bosish orqali tez o‘zgartirish yoki ma’lumot olishga yordam beradi.
Uning asosiy qiymati soddalik va tezlikda: qisqa vazifalarni “o‘rnatmasdan” bajarish mumkin, lekin xavfsizlik cheklovlari va kod uzunligi kabi amaliy limitlarga e’tibor berish zarur.