Вход Регистрация
Bookmarklet nima va qanday ishlaydi: xatcho‘pdan JavaScriptni ishga tushirish

Bookmarklet nima va qanday ishlaydi: xatcho‘pdan JavaScriptni ishga tushirish

Bookmarklet nima va qanday ishlaydi? JavaScript kodini xatcho‘p ichiga joylab, joriy sahifada DOM bilan tez amallarni bajaring: ma’lumot yig‘ish, uslub o‘zgartirish va UR

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() yoki getElementsByTagName().
  • O‘qish: textContent, href, dataset.
  • O‘zgartirish: element.style yoki 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: alert odatda 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.