Olim javoblari html. Response ob'ektining tavsifi. Professor Markupdan so'rang

Tarjimasi: Vlad Merzhevich

Veb-shakllar haqida hamma biladi, to'g'rimi? Biz tegni joylashtiramiz, bir nechta, ehtimol, barchasini tugma bilan yakunlang va siz tugatdingiz.

Siz uning yarmini bilmaysiz. HTML5 o'ndan ortiq yangi maydon turlarini belgilaydi, ulardan siz o'z shakllaringizda foydalanishingiz mumkin. Men “foydalanish” deganimda, ularni darhol ishlatish mumkin, demoqchiman - hech qanday hiyla-nayranglar, buzg'unchiliklar yoki vaqtinchalik echimlarsiz. Ko'p tashvishlanmang, men bu qiziqarli yangi xususiyatlarning barchasi har bir brauzerda qo'llab-quvvatlanadi, deb aytmayapman. Mutlaqo yo'q, men hammani nazarda tutmayman. Zamonaviy brauzerlarda, ha, sizning shakllaringiz ular qodir bo'lgan hamma narsani ko'rsatadi. Ammo eski brauzerlarda sizning shakllaringiz to'liq salohiyatga ega bo'lmasa ham, ishlaydi. Ya'ni, bu xususiyatlar har bir brauzerda nozik tarzda yomonlashadi. Hatto IE6 da.

Tezkor matn Tezkor matnni qo'llab-quvvatlash
I.E. Firefox Safari Chrome Opera iPhone Android
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

Formatlar bilan bog'liq birinchi HTML5 takomillashuvi kiritish maydoniga tezkor matnni o'rnatish qobiliyatidir. Agar maydon bo'sh bo'lsa va fokus bo'lmasa, ushbu matn kiritish maydonida ko'rsatiladi. Kirish maydonini bosganingizdan so'ng (yoki Tab orqali unga o'ting), maslahat matni yo'qoladi.

Ilgari so'rov matnini ko'rgan bo'lsangiz kerak. Masalan, Mozilla Firefox maslahat matnini o'z ichiga oladi manzil satri"Xatcho'plar va jurnallardan qidirish" yozuvi bilan.

Manzil satrini bosganingizda maslahat matni yo'qoladi.

Shakllaringizga taklif qiluvchi matnni qanday kiritishingiz mumkin.




To'ldiruvchi atributini qo'llab-quvvatlamaydigan brauzerlar uni e'tiborsiz qoldiradilar. Hech qanday zarar yoki buzilish.

Professor Markupdan so'rang

☞ Savol. Foydalasam bo'ladimi? HTML belgilash to'ldiruvchi atributi uchunmi? Men rasm qo'shmoqchiman yoki ranglarni o'zgartirmoqchiman.

A. To'ldiruvchi atributi faqat matnni o'z ichiga olishi mumkin, HTML kodsiz. Biroq, ba'zi brauzerlarda matn uslubini o'rnatishga imkon beruvchi maxsus CSS kengaytmalari mavjud.

Avtofokus maydonlari Avtofokusni qo'llab-quvvatlash
I.E. Firefox Safari Chrome Opera iPhone Android
- - 4.0+ 3.0+ 10.0+ - -

Veb-saytlar JavaScript-dan foydalanishi mumkin avtomatik qabul qilish birinchi shakl maydoniga e'tibor qarating. Masalan, asosiy sahifada Google.com Qidiruv kalit so'zlarini kiritish maydonida avtofokus mavjud. Bu ko'pchilik uchun qulay bo'lsa-da, ilg'or foydalanuvchilar va alohida ehtiyojli odamlar uchun bezovta bo'lishi mumkin. Agar siz sahifani aylantirishni kutayotganda bo'sh joy tugmasini bossangiz, aylantirish bo'lmaydi, chunki asosiy e'tibor shaklning kiritish maydoniga qaratilgan (u maydonga aylantirish o'rniga bo'sh joy kiritadi). Agar sahifa yuklanayotganda fokusni boshqa kiritish maydoniga o‘tkazsangiz, saytning avtofokus skripti fokusni dastlabki kiritish maydoniga “yordamli tarzda” qaytarishi mumkin, bu esa yozishni to‘xtatib, noto‘g‘ri joyga yozishingizga olib keladi.

Avtofokus JavaScript orqali ishlaganligi sababli, ushbu ekstremal vaziyatlarni hal qilishda qiyinchiliklar va veb-sahifaning diqqatini "o'g'irlashini" istamaydigan odamlar uchun kichik imkoniyatlar bo'lishi mumkin.

Ushbu muammolarni hal qilish uchun HTML5 barcha shakl elementlari uchun avtofokus atributini taqdim etadi. Avtofokus atributi xuddi shunday ko'rinadi: sahifa yuklanishi bilanoq u diqqatni belgilangan maydonga o'tkazadi. Ammo bu skript emas, balki faqat belgilash bo'lgani uchun, xatti-harakatlar barcha saytlarda izchil bo'ladi. Bundan tashqari, brauzer ishlab chiqaruvchilari (yoki kengaytma mualliflari) foydalanuvchilarga avtofokusni o'chirish usulini taklif qilishlari mumkin.

Shakl maydonini avtofokusga qanday o'rnatishingiz mumkin.




Avtofokus atributini qo'llab-quvvatlamaydigan brauzerlar uni e'tiborsiz qoldiradilar.

Nima bo'ldi? Avtofokus nafaqat zamonaviy HTML5 brauzerlarida, balki hamma joyda ishlashini xohlaysizmi? Siz joriy skriptni avtofokus bilan qoldirishingiz mumkin, shunchaki ikkita kichik o'zgartirish kiriting:

  • HTML kodiga avtofokus atributini qo'shing;
  • Brauzer avtofokus atributini qo'llab-quvvatlashini tekshiring va agar bo'lmasa, o'z skriptingizni ishga tushiring.

Muqobil avtofokus




agar (!(document.createElement("kirish") da "avtofokus") ) (
document.getElementById("q").focus();
}


Fokusni erta sozlang

Ko'pgina veb-sahifalar window.onload ishga tushishini va fokusni o'rnatishni kutadi. Lekin window.onload hodisasi barcha tasvirlar yuklanmaguncha ishga tushmaydi. Agar sizning sahifangizda juda ko'p rasmlar bo'lsa, foydalanuvchi sahifangizning boshqa qismi bilan o'zaro aloqada bo'lganidan keyin bunday sodda skriptlar diqqat markazini o'zgartirishi mumkin. Shuning uchun kuchli foydalanuvchilar avtofokus skriptlaridan nafratlanishadi.

Misol uchun, oldingi bo'limda avtofokus skripti havola qilingan shakl maydonidan keyin darhol joylashtirilgan. Bu optimal yechim, lekin sahifaning o'rtasiga JavaScript kod blokini qo'yish sizning sezgirligingizni buzishi mumkin (yoki oddiyroq, tizimingiz u qadar moslashuvchan bo'lmasligi mumkin). Agar sahifaning oʻrtasiga skript kirita olmasangiz, fokusni window.onload oʻrniga jQuery’da $(document).ready() kabi maxsus hodisa orqali oʻrnatishingiz kerak.

jQuery orqali avtofokus




$(hujjat).ready(funksiya() (

$("#q").focus();
}
});






JQuery moslashtirilgan hodisasi DOMga kirish mumkin bo'lgan zahoti ishga tushadi - ya'ni sahifa matni yuklanishini kutadi, lekin barcha tasvirlar yuklanishini kutmaydi. Bu optimal yondashuv emas - agar sahifa juda katta bo'lsa yoki tarmoq ulanishi sekin, foydalanuvchi fokus skripti bajarilgunga qadar sahifa bilan o'zaro aloqada bo'lishi mumkin. Ammo bu window.onload hodisasi sodir bo'lishini kutishdan ko'ra ancha yaxshi.

Agar siz rozi bo'lsangiz va sahifangiz kodiga bitta iborali skriptni qo'shishga tayyor bo'lsangiz, bu birinchi variantga qaraganda yomonroq va ikkinchisidan yaxshiroq bo'lgan kelishuvdir. O'zingizning voqealaringizni o'rnatish uchun jQuery maxsus hodisalaridan foydalanishingiz mumkin, deylik autofocus_ready. Avtofokus maydoni mavjud bo'lishi bilan siz ushbu hodisani qo'lda boshlashingiz mumkin. Menga ushbu texnikani o'rgatgani uchun E.M. Shtenbergga rahmat.

Muqobil maxsus hodisa bilan avtofokus




$(hujjat).bind("avtofokus_tayyor", funktsiya() (
agar (!(document.createElementda "avtofokus"("kiritish")))) (
$("#q").focus();
}
});





$(hujjat).trigger("avtofokus_tayyor");

Ushbu yechim xuddi birinchi yondashuv kabi optimaldir. Sahifa matni yuklanayotganda texnik jihatdan imkon qadar tezroq shakl maydoniga e'tibor qaratiladi. Ilova mantig'ining bir qismi (forma maydoniga e'tibor qaratish) sahifaning asosiy qismidan bo'limga ko'chirildi. Ushbu misol jQuery-ga asoslangan, ammo maxsus hodisalar tushunchasi jQuery-ga xos emas. YUI va Dojo kabi boshqa JavaScript kutubxonalari ham xuddi shunday imkoniyatlarni taklif etadi.

Keling, xulosa qilaylik.

  • Fokusni to'g'ri sozlash juda muhimdir.
  • Iloji bo'lsa, brauzerni diqqatni qaratmoqchi bo'lgan maydonda avtofokus atributidan foydalanishini so'rang.
  • Agar eski brauzerlar uchun muqobil koddan foydalansangiz, skript faqat eski brauzerlarda ishlashi uchun avtofokus atributini qo'llab-quvvatlashni belgilang.
  • Diqqatni iloji boricha tezroq belgilang. Fokus skriptini ariza maydonidan keyin darhol kodga kiriting. Agar bu sizni bezovta qilmasa, maxsus hodisalarni qo'llab-quvvatlaydigan JavaScript kutubxonasini joylashtiring va hodisani ariza maydonidan keyin darhol kodda ko'taring. Agar buning iloji bo'lmasa, jQuery'dan $(document).ready() kabi hodisadan foydalaning.
  • Hech qanday holatda siz window.onload diqqatni jamlashini kutmasligingiz kerak.
Manzillar Elektron pochta

O'n yildan ortiq vaqt davomida shakllar faqat bir nechta turdagi maydonlarni o'z ichiga oladi. Eng keng tarqalganlari quyidagilar.

Ushbu maydon turlarining barchasi hali ham HTML5 da ishlaydi. Agar siz "HTML5 ga yangilasangiz" (ehtimol !DOCTYPE ni o'zgartirsangiz), shakllaringizga birorta ham o'zgartirish kiritishingiz shart bo'lmaydi. Orqaga moslik uchun ha!

Biroq, HTML5 13 ta yangi maydon turlarini belgilaydi va ulardan foydalanishni boshlamaslik uchun hech qanday sabab yo'q.

Ushbu yangi turdagi elektron pochta manzillarining birinchisi. Bu shunga o'xshash narsaga o'xshaydi.





Men "turni qo'llab-quvvatlamaydigan brauzerlarda = "email" ..." boshlangan jumlani yozmoqchi edim, lekin to'xtab qoldi. Nega? Chunki brauzerlar type="email" ni qo'llab-quvvatlamasligiga ishonchim komil emas. Barcha brauzerlar "qo'llab-quvvatlaydi" type="elektron pochta" . Ular hech qanday maxsus ish qilmasligi mumkin, lekin type="email" ni tanimaydigan brauzerlar uni type="text" deb hisoblaydi va uni oddiy matn maydoni sifatida ko'rsatadi.

Bu qanchalik muhimligini ta'kidlayman. Internetda elektron pochta manzilingizni kiritishingizni so'raydigan millionlab shakllar mavjud va ularning barchasi . Siz matn oynasini ko'rasiz, unga elektron pochta manzilingizni kiriting va hammasi. Keyin type="email" ni belgilaydigan HTML5 keladi. Brauzerlar aqldan ozganmi? Yo'q. Erdagi har bir brauzer noma'lum tip atributini type="text" deb hisoblaydi - hatto IE6. Shunday qilib, hoziroq type="email" yordamida shakllaringizni "yangilashingiz" mumkin.

Agar brauzer type="email" ni qo'llab-quvvatlaydi desak nima bo'ladi? Xo'sh, bu har qanday narsani anglatishi mumkin. HTML5 spetsifikatsiyasi yangi maydon turlari uchun maxsus foydalanuvchi interfeysini talab qilmaydi. Opera forma maydoniga kichik belgi qo'shadi. Safari va Chrome kabi boshqa HTML5 brauzerlari matn maydoni sifatida ishlaydi - type="text" bilan bir xil - shuning uchun foydalanuvchilaringiz farqni sezmaydilar (ular manba kodiga qaramaguncha).

Va keyin iPhone bor.

iPhone-da jismoniy klaviatura yo'q. Barcha "yozish" tegishli vaqtda, masalan, veb-sahifadagi forma maydoniga kirganingizda paydo bo'ladigan ekran klaviaturasini bosish orqali amalga oshiriladi. Apple aqlli ish qildi iPhone brauzeri. U ba'zi yangi HTML5 maydonlarini taniydi va kiritishni optimallashtirish uchun ekrandagi klaviaturani dinamik ravishda o'zgartiradi.

Masalan, elektron pochta manzili matndir, shunday emasmi? Albatta, lekin bu matnning maxsus turi. Shunday qilib, deyarli barcha elektron pochta manzillarida @ belgisi mavjud va shunga ko'ra kamida, bitta nuqta (.), lekin ular bo'sh joyni o'z ichiga olmaydi. Shunday qilib, iPhone dan foydalanayotganingizda va ga o‘tsangiz, ekrandagi klaviaturaga ega bo‘lasiz, unda kichikroq bo‘sh joy hamda belgilar uchun maxsus tugmalar mavjud. Va @.

Keling, xulosa qilaylik. Barcha sohalaringizni darhol tarjima qilishning hech qanday salbiy tomoni yo'q elektron pochta manzillari turida = "elektron pochta" . Buni iPhone foydalanuvchilaridan boshqa deyarli hech kim sezmaydi, ehtimol ular ham buni sezmaydilar. Lekin buni payqaganlar jimgina jilmayib, ishini biroz osonlashtirganingiz uchun rahmat aytishadi.

Veb-manzillar

URI deb atagan bir nechta pedantlar bundan mustasno, geekslar URL deb ataydigan veb-manzil ixtisoslashgan matnning yana bir turidir. Veb-manzilning sintaksisi tegishli Internet standarti bilan cheklangan. Agar kimdir sizdan formaga veb-manzilni kiritishingizni so'rasa, ular "125 Farwood Road" emas, balki "http://www.google.com/" kabi narsani kutishadi. Egri chiziqlar keng tarqalgan - hatto ichida bosh sahifa Googleda ulardan uchtasi bor. Nuqtalar ham keng tarqalgan, ammo bo'shliqlar taqiqlangan. Va har bir veb-manzil ".com" yoki ".org" kabi domen qo'shimchasiga ega.

Va shuning uchun ... (baraban rulosi iltimos)... . iPhone-da bu shunday ko'rinadi.

iPhone o'zini o'zgartirdi virtual klaviatura, xuddi elektron pochta manzili uchun qilganim kabi, lekin endi uni veb-manzilni yozish uchun optimallashtirdim. Bo'sh joy butunlay uchta virtual tugma bilan almashtirildi: slash, nuqta va ".com" (".org" yoki ".net" kabi boshqa qo'shimchani tanlash uchun ".com" tugmachasini bosib ushlab turishingiz mumkin).

HTML5-ni qo'llab-quvvatlamaydigan brauzerlar type="url" ni type="text" sifatida ko'rib chiqadi, shuning uchun veb-manzilni kiritishingiz kerak bo'lgan barcha maydonlar uchun bu turdan foydalanishning hech qanday salbiy tomoni yo'q.

Hisoblagich sifatida raqamlar

Keyingi qadam: raqamlar. Raqamni so'rash elektron pochta yoki veb-manzilni so'rashdan ko'ra murakkabroq. Birinchidan, raqamlar siz o'ylagandan ham murakkabroq. Raqamni tezda tanlang. -1? Yo'q, men 1 dan 10,7 ½ gacha bo'lgan raqamni nazarda tutdimmi? Yo'q, yo'q, kasr bo'lmang, ahmoq. p? Endi siz irratsional sonni tanladingiz.

Shuni ta'kidlashni istardimki, sizdan ko'pincha "faqat raqam" so'ralmaydi. Ular ma'lum bir diapazondagi raqamni so'rashlari ehtimoli ko'proq. Siz bu oraliqda faqat ma'lum turdagi raqamlarni xohlashingiz mumkin - balki butun sonlar, lekin kasr yoki emas o'nlik sonlar yoki 10 ning ko'paytmalari kabi ekzotikroq narsa. HTML5 hammasini qamrab oladi.

Deyarli har qanday raqamni tanlang

Keling, bir vaqtning o'zida bitta atributni ko'rib chiqaylik.

  • type = "raqam" bu raqamli maydon degan ma'noni anglatadi.
  • min="0" bu maydon uchun ruxsat etilgan minimal qiymatni belgilaydi.
  • max="10" - ruxsat etilgan maksimal qiymat.
  • step="2" minimal qiymat bilan birgalikda diapazondagi haqiqiy raqamlarni belgilaydi: 0, 2, 4 va hokazo, maksimal qiymatgacha.
  • value="6" standart qiymat. Tanish bo'lsa, bu har doim shakl maydoni qiymatlarini aniqlash uchun ishlatiladigan bir xil atributdir. Buni HTML5 asosi sifatida boshlang'ich nuqtasi sifatida eslatib o'tdim oldingi versiyalar HTML. Oldindan qilgan ishni qilishni qayta o'rganishingiz shart emas.

Bu raqamli maydon uchun kod. Shuni yodda tutingki, ushbu atributlarning barchasi ixtiyoriydir. Agar sizda minimal, lekin maksimal bo'lmasa, siz min atributini belgilashingiz mumkin, lekin maksimal atributni emas. Standart qadam qiymati 1 va boshqa qadam qiymati kerak bo'lmaguncha qadam atributini o'tkazib yuborishingiz mumkin. Agar standart qiymat bo'lmasa, qiymat atributi bo'lishi mumkin bo'sh qator yoki hatto butunlay chiqarib tashlangan.

Ammo HTML5 bu bilan to'xtamaydi. Xuddi shu past uchun past narx ushbu qulay JavaScript usullari bilan qo'lga kiritilgan erkinlik.

  • input.stepUp(n) maydon qiymatini n ga oshiradi.
  • input.stepDown(n) maydon qiymatini n ga kamaytiradi.
  • input.valueAsNumber joriy qiymatni suzuvchi nuqtali raqam sifatida qaytaradi (input.value xususiyati har doim qatordir).

Displey muammolari? Xo'sh, raqamlarni boshqarish uchun to'g'ri interfeys brauzerlarda boshqacha tarzda amalga oshiriladi. Yozish qiyin bo'lgan iPhone-da brauzer raqamlarni kiritish uchun virtual klaviaturani yana optimallashtiradi.

Operaning ish stoli versiyasida type="raqam" maydoni qiymatlarni o'zgartirish uchun bosishingiz mumkin bo'lgan kichik yuqoriga va pastga o'qlari bo'lgan hisoblagich sifatida paydo bo'ladi.

Opera min, max va step atributlarini hurmat qiladi, shuning uchun siz har doim maqbul raqamli qiymatga erishasiz. Agar siz qiymatni maksimal darajaga oshirsangiz, hisoblagichdagi yuqoriga o'q kul rangga aylanadi.

Men ushbu bobda muhokama qilgan boshqa barcha kiritish maydonlarida bo'lgani kabi, type="number" ni qo'llab-quvvatlamaydigan brauzerlar uni type="text" sifatida ko'rib chiqadilar. Standart qiymat maydonda ko'rsatiladi (u qiymat atributida saqlangan kabi), lekin min va max kabi boshqa atributlar e'tiborga olinmaydi. Siz ularni o'zingiz amalga oshirishingiz yoki hisoblagich boshqaruvini allaqachon amalga oshiradigan JavaScript ramkasidan foydalanishingiz mumkin. Avval bu yerni tekshiring.

agar (! .inputtypes.number) (
// maydon turi = raqam uchun mahalliy yordam yo'q
// Dojo yoki boshqa JavaScript ramkasini sinab ko'rishi mumkin
}

Raqamlar slayder sifatida

Hisoblagich emas yagona yo'l raqamlarni kiritish ko'rinishlari. Ehtimol siz shunga o'xshash slayderni ham ko'rgansiz.

Endi siz formada slayderga ega bo'lishingiz mumkin. Kod g'alati tarzda hisoblagich maydoniga o'xshaydi.


Barcha mavjud atributlar type="number" bilan bir xil - min , max , step , value - va bir xil narsani anglatadi. Faqatgina farq shundaki foydalanuvchi interfeysi. Kirish maydoni o'rniga brauzerlar slayder sifatida type="diapazonini" ko'rsatishi kutiladi. Yozish vaqtida oxirgi versiyalari Safari, Chrome va Opera bu bilan ishlagan. Afsuski, iPhone oddiy ko'rinadi matn maydoni, u hatto raqamlarni kiritish uchun ekrandagi klaviaturasini ham optimallashtirmaydi. Boshqa barcha brauzerlar ushbu maydonni oddiygina type="text" sifatida ko'rib chiqadilar, shuning uchun darhol ushbu turdan foydalanishni boshlash uchun hech qanday sabab yo'q.

HTML 4 taqvim orqali sana tanlashni o'z ichiga olmaydi. JavaScript freymvorklari sizga buni (Dojo, jQuery UI, YUI, Closure Library) aylanib o'tishga imkon beradi, lekin, albatta, ushbu echimlarning har biri har qanday o'rnatilgan kalendar uchun ramkani "tatbiq etishni" talab qiladi.

Nihoyat HTML5 hech qanday skriptsiz mahalliy sana tanlash vositalarini yoqish usulini belgilaydi. Ulardan aslida oltitasi bor: sana, oy, hafta, vaqt, sana + vaqt va vaqt mintaqasi bilan sana + vaqt.

Hozircha qo'llab-quvvatlash... kam.

Sana tanlashni qo'llab-quvvatlash Opera Boshqa brauzerlarni kiriting
turi = "sana" 9.0+ -
turi = "oy" 9.0+ -
turi = "hafta" 9.0+ -
turi = "vaqt" 9.0+ -
type = "datetime" 9.0+ -
type = "datetime-local" 9.0+ -

Opera qanday ko'rsatadi:

Agar sana bilan birga vaqt kerak bo'lsa, Opera ham quyidagilarni qo'llab-quvvatlaydi:

Agar sizga bir oy va bir yil kerak bo'lsa (masalan, kredit kartaning amal qilish muddati), Opera quyidagilarni ko'rsatishi mumkin:

Kamroq tarqalgan, ammo mavjud bo'lib, yil haftasini quyidagi orqali tanlash mumkin:

Oxirgi, lekin eng muhimi, vaqt:

Muqobil bilan sana tanlash




...

var i = document.createElement("input");
i.setAttribute("turi", "sana");
agar (i.type == "matn") (
// Sana tanlashni qo'llab-quvvatlamaydi :(
// Uni yaratish uchun Dojo/jQueryUI/YUI/Closure-dan foydalaning,
// keyin elementni dinamik ravishda almashtiring
}

Ehtimol, boshqa brauzerlar oxir-oqibat bu turlarni qo'llab-quvvatlaydi. type="email" va boshqa turlar singari, bu forma maydonlari type="date" va uning variantlarini tanimaydigan brauzerlarda oddiy matn sifatida paydo bo'ladi. Agar xohlasangiz, shunchaki dan foydalanishingiz mumkin, Opera foydalanuvchilarini xursand qilishingiz va boshqa brauzerlar yetishini kutishingiz mumkin. Buni ishlatish yanada realroq, lekin brauzerda mahalliy sana tanlashni qoʻllab-quvvatlashi mavjudligini tekshiring va siz tanlagan skript (Dojo, jQuery UI, YUI, yopilish kutubxonasi yoki boshqa variantlar) koʻrinishidagi muqobil yechimni qoʻshing.

Qidiruv oynasi

Shunday qilib, qidiring. Faqat Google yoki Yahoo'dan qidiruvlar emas (yaxshi, ular ham). Har qanday sahifada, istalgan veb-saytda har qanday qidiruv maydoni haqida o'ylab ko'ring. Amazonda qidiruv maydoni bor, Yandexda qidiruv maydoni bor, aksariyat bloglarda ham shunday. Ular qanday yaratilgan? , xuddi internetdagi boshqa matn maydoni kabi. Keling, buni tuzataylik.

Yangi avlodni qidiring




Ba'zi brauzerlarda oddiy matn maydonidan farqni sezmaysiz. Ammo Mac OS X da Safari dan foydalanayotgan bo'lsangiz, u shunday ko'rinadi.

Farqni topdingizmi? Kirish maydoni yumaloq burchaklarga ega! Bilaman, bilaman, his-tuyg'ularingni o'zingga sig'dirolmaysan. Ammo kuting, yana ko'p narsa bor! Maydonga type="search" yozishni boshlaganingizda, Safari oynaning o'ng tomoniga kichik "x" tugmachasini qo'yadi. "X" belgisini bosish maydon tarkibini tozalaydi. Gugl xrom, kaput ostida bir xil texnologiyaga ega bo'lgan, xuddi shunday yo'l tutadi. Ushbu kichik fokuslarning ikkalasi ham iTunes va boshqa Mac OS X mijoz ilovalaridagi mahalliy qidiruvga o'xshaydi va o'zini tutadi.

Apple.com saytga "macawni sevish" hissini etkazishga yordam berish uchun sayt qidiruvidan foydalanadi. Ammo bu erda Mac uchun maxsus hech narsa yo'q. Bu shunchaki kod, shuning uchun har bir platformadagi har bir brauzer platforma konventsiyalariga muvofiq qanday render qilishni tanlashi mumkin. Boshqa barcha yangi turlarda bo'lgani kabi, type="search" ni tanimaydigan brauzerlar uni type="text" deb hisoblashadi, shuning uchun bugun barcha qidiruv maydonchalaringiz uchun type="search" dan foydalanishni boshlamaslik uchun mutlaqo sabab yo'q.

Professor Markup deydi

Odatiy bo'lib, Safari ko'pgina uslublarni qo'llamaydi. Agar siz Safari-ni qidiruv maydonini oddiy matn maydoni sifatida ko'rishga majburlamoqchi bo'lsangiz (shunda siz o'zingizning uslublaringizni qo'llashingiz mumkin), ushbu qoidani uslublar jadvalingizga qo'shing.

kiritish(
-webkit-ko'rinishi:matn maydoni;
}

Menga bu hiylani o'rgatgani uchun Jon Leynga rahmat.

Rang tanlash

HTML5 shuningdek, rangni tanlash imkonini beruvchi va uni o'n oltilik tizimda qaytaradigan maydonni belgilaydi. Hech bir brauzer rang tanlashni qo'llab-quvvatlamaydi, bu juda achinarli, chunki men doimo Mac OS palitralarini yaxshi ko'rganman. Balki bir kun.

Eslatma tarjimon Opera 11 bu xususiyatni qo'llab-quvvatlaydi.

Shaklni tasdiqlash

Ushbu bobda men yangi shakl elementlari va avtofokus kabi yangi xususiyatlar haqida gapirdim, lekin men HTML5 shakllarining eng hayajonli qismi haqida gapirmadim: avtomatik tekshirish ma'lumotlarni kiritish. Keling, ko'rib chiqaylik umumiy muammolar shaklda elektron pochta manzilingizni kiriting. Ehtimol sizda JavaScript orqali mijoz tomonidan tekshirish, keyin esa PHP, Python yoki boshqa server tomonidagi til orqali server tomoni tekshiruvi mavjud. HTML5 hech qachon server tomoni tekshiruvini almashtirmaydi, lekin u bir kun kelib mijoz tomoni tekshiruvini o'zgartirishi mumkin.

JavaScript-da elektron pochta manzilini tekshirishda ikkita katta muammo mavjud:

  • Kichik miqdordagi tashrif buyuruvchilaringiz (ehtimol, taxminan 10%) JavaScript-ni yoqmagan.
  • Siz manzilni noto'g'ri olasiz.
  • Jiddiy, siz manzilni noto'g'ri olasiz. Tasodifiy belgilar to'plami haqiqiy elektron pochta manzili ekanligini aniqlash juda qiyin. Qanchalik qattiqroq qarasangiz, shunchalik qiyin bo'ladi. Bu juda, juda qiyin, deb aytdimmi? Bu bosh og'rig'ini brauzeringizga osib qo'yish osonroq emasmi?

    Opera turini tekshiradi = "elektron pochta"

    Mana Opera 11 dan skrinshot, garchi funksionallik Opera 9-dan beri mavjud bo'lsa-da. Kod type atributi uchun elektron pochta qiymatini belgilashni o'z ichiga oladi. Opera foydalanuvchisi bilan ariza yuborishga harakat qilganda, brauzer skriptlar o'chirilgan bo'lsa ham, avtomatik ravishda elektron pochta manzilini tekshiradi.

    HTML5 shuningdek, veb-manzillarni maydon va raqamlar bilan tekshirishni taklif qiladi. Raqamni tekshirish min va maksimal atributlarning qiymatlarini hisobga oladi, shuning uchun agar siz juda katta raqam kiritsangiz, brauzerlar shaklni yuborishingizga ruxsat bermaydi.

    HTML5 da shaklni tekshirishni ta'minlaydigan kod yo'q, u sukut bo'yicha amalga oshiriladi. Tekshirishni o'chirish uchun novalidate atributidan foydalaning.

    Meni sinab ko'rma




    Brauzerlar HTML5-da shaklni tekshirishni qo'llab-quvvatlashni sekinlashtirdi. Firefox 4 to'liq qo'llab-quvvatlanadi. Afsuski, Safari va Chrome faqat qisman amalga oshirildi: ular shakl elementlarini tasdiqlaydi, lekin ariza maydoni tekshirilmaganda ko'rinadigan xabarlarni ko'rsatmaydi. Boshqacha qilib aytadigan bo'lsak, type="date" ga noto'g'ri (yoki noto'g'ri yozilgan) sana kiritsangiz, Safari va Chrome shaklni yubormaydi, lekin nima uchun bunday bo'lmaganini aytmaydi. Ular fokusni noto'g'ri qiymatni o'z ichiga olgan maydonga o'rnatadilar, lekin Opera yoki Firefox 4 kabi xato xabarini ko'rsatmaydi.

    Majburiy maydonlar Qo'llab-quvvatlash
    I.E. Firefox Safari Chrome Opera iPhone Android
    - 4.0+ - - 9.0+ - -

    HTML5 da shaklni tekshirish har bir maydon turi bilan cheklanmaydi. Bundan tashqari, ba'zi maydonlar talab qilinishini belgilashingiz mumkin, bunday maydonlar formani yuborishdan oldin qiymatga ega bo'lishi kerak.

    Majburiy maydonlar uchun kod imkon qadar sodda.




    Brauzerlar kerakli maydonning asl ko'rinishini o'zgartirishi mumkin. Bu Mozilla Firefox 4.0 da qanday ko'rinishiga misol.

    Bundan tashqari, agar siz arizani kerakli qiymatni to'ldirmasdan topshirishga harakat qilsangiz, Firefox ushbu maydon kerakligi va bo'sh bo'lmasligi haqida ma'lumot panelini ko'rsatadi.

    Tekshiruvchilardan javob yaratish

    Tekshirish moslamasi so'rovni qayta ishlashni tugatgandan so'ng, odatda javobni yaratishi kerak. IController interfeysini to'g'ridan-to'g'ri amalga oshirish orqali past darajadagi kontroller yaratganimizda, biz so'rovni qayta ishlashning har bir jihati, jumladan, mijozga javob yaratish uchun javobgarlikni olishimiz kerak.

    Misol uchun, HTML-javobni yuborish uchun HTML ma'lumotlarini yaratish va tuzish va keyin Response.Write() usuli yordamida mijozga yuborish kerak bo'ladi. Xuddi shunday, foydalanuvchi brauzerini boshqa URL manziliga yo‘naltirish uchun Response.Redirect() usulini chaqirish va unga kerakli URL manzilini yuborish kerak bo‘ladi. Ikkala yondashuv ham quyidagi kodda ko'rsatilgan bo'lib, biz avvalgi maqolada IController interfeysini amalga oshirish orqali yaratgan BasicController sinfining kengaytmalarini ko'rsatadi:

    System.Web.Mvc dan foydalanish; System.Web.Routing-dan foydalanish; Namespace ControllersAndActions.Controllers ( umumiy sinf BasicController: IController ( public void Execute(RequestContext requestContext) ( string controller = (string)requestContext.RouteData.Values["controller"]; string action = (string)requestContext[RouteDataValuction. "]; agar (action.ToLower() == "redirect") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else ( requestContext.HttpContext.Response.Write(string.Format("Controller) : (0), Harakat usuli: (1)", boshqaruvchi, harakat)); ) ) ) )

    Xuddi shu yondashuv Controller sinfidan kontrollerni meros qilib olishda ham qo'llanilishi mumkin. Execute() usulida requestContext.HttpContext.Response xossasi o‘qilganida qaytariladigan HttpResponseBase klassiga quyida keltirilgan misolda ko‘rsatilganidek, Controller.Response xususiyati orqali kirish mumkin, u DerivedController sinfini kengaytiradi, bundan oldin ham yaratgan. Controller sinfidan meros:

    Tizimdan foydalanish; System.Web-dan foydalanish; System.Web.Mvc yordamida; namespace ControllersAndActions.Controller ( umumiy sinf DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" ); else Response.Write("Controller: Derived, Action Method: ProduceOutput"); ) ) )

    ProduceOutput() usuli mijozga qanday javob yuborishni hal qilish uchun Server.MachineName xususiyati qiymatidan foydalanadi. ("ProfessorWeb" mening ishlab chiqish mashinamning nomi.)

    Garchi foydalanuvchiga javob yaratishning ushbu yondashuvi ishlayotgan bo'lsa-da, u bilan bir qator muammolar mavjud:

      Controller sinflari haqida ma'lumot bo'lishi kerak HTML tuzilishi yoki URL, bu sinflarni o'qish va saqlashni qiyinlashtiradi.

      To'g'ridan-to'g'ri chiqishga javob beradigan kontrollerni birlik sinovidan o'tkazish qiyin. Siz Response ob'ektining soxta ilovalarini yaratishingiz kerak va keyin uning nima ekanligini aniqlash uchun boshqaruvchidan chiqishni qayta ishlashingiz kerak bo'ladi. Bu, masalan, HTML belgilarini tahlil qilish zarurligini anglatishi mumkin kalit so'zlar, bu uzoq va zerikarli jarayon.

      Har bir javobning kichik tafsilotlarini shu tarzda qayta ishlash murakkab va xatolarga moyil. Ba'zi dasturchilar past darajadagi kontrollerni qurish orqali ta'minlangan mutlaq boshqaruvni yoqtirishadi, lekin bu odatda juda tez murakkablashadi.

    Yaxshiyamki, MVC Framework ushbu muammolarning barchasini - harakatlar natijalarini hal qiladigan qulay vositaga ega. Keyingi bo'limlarda harakat natijalari tushunchasi tushuntiriladi va ko'rsatiladi turli yo'llar bilan boshqaruvchilardan javoblarni ishlab chiqarish uchun foydalanish.

    Harakatlar natijalari

    MVC Framework-dagi harakatlar natijalari niyat bayonotlarini niyatni amalga oshirishdan ajratish uchun ishlatiladi (tavtologiya uchun uzr). Kontseptsiyani o'zlashtirganingizdan so'ng oddiy ko'rinadi, ammo ba'zi bilvositalik tufayli tushunish uchun biroz vaqt kerak bo'ladi.

    To'g'ridan-to'g'ri Response ob'ekti bilan ishlash o'rniga, harakat usullari nazoratchi javobi qanday bo'lishi kerakligini tavsiflovchi ActionResult-dan olingan sinf ob'ektini qaytaradi, masalan, ko'rinishni ko'rsatish yoki boshqa URL yoki harakat usuliga yo'naltirish. Biroq (bu juda bilvosita) javob to'g'ridan-to'g'ri ishlab chiqilmaydi. Buning o'rniga, MVC Framework harakat usuli chaqirilgandan keyin natijani ishlab chiqarish uchun ishlov beradigan ActionResult ob'ekti yaratiladi.

    Harakat natijalari tizimi Buyruqning dizayn namunasiga misoldir. Ushbu naqsh bajarilayotgan operatsiyalarni tavsiflovchi ob'ektlarni saqlaydigan va uzatadigan stsenariylarni ifodalaydi.

    MVC Framework harakat usulidan ActionResult obyektini qabul qilganda, u chaqiradi ExecuteResult() usuli, ushbu ob'ekt sinfida belgilangan. Keyin harakat natijalarini amalga oshirish Response ob'ektida ishlaydi va sizning maqsadingizga mos keladigan natijani yaratadi. Buni amalda ko‘rsatish uchun keling, Infratuzilma papkasini yaratamiz va unga CustomRedirectResult.cs deb nomlangan yangi sinf faylini quyidagi misolda ko‘rsatilgan maxsus ActionResult ilovasi bilan qo‘shamiz:

    System.Web.Mvc dan foydalanish; namespace ControllersAndActions.Infrastructure ( umumiy sinf CustomRedirectResult: ActionResult ( umumiy Url ( get; set; ) umumiy bekor qilish bekor ExecuteResult(ControllerContext context) ( string fullUrl = UrlHelper.GenerateContentUrl = UrlHelper.GenerateContentUrl(UrlHelper.GenerateContentUrl(UrlHelper.Generate. bevosita (fullUrl); )))

    Bu sinf System.Web.Mvc.RedirectResult sinfining ishlash usuliga asoslangan. Afzalliklardan biri ochiq manba MVC Framework har qanday narsaning ichki ishini o'rganishga qodir. CustomRedirectResult klassi MVC ekvivalentiga qaraganda ancha sodda, ammo ushbu maqola maqsadlari uchun etarli.

    RedirectResult sinfini yaratishda biz foydalanuvchi qayta yo'naltirilishi kerak bo'lgan URL manziliga o'tamiz. Harakat usuli tugagach, MVC Framework tomonidan bajariladigan ExecuteResult() usuli Framework taqdim etgan ControllerContext obyekti orqali so‘rov uchun Response obyektini oladi va RedirectPermanent() usuli yoki Redirect() usulini chaqiradi (bu maqolaning oldingi misolida IController-ning past darajadagi amalga oshirilishida aynan nima qilingan).

    CustomRedirectResult sinfidan foydalanish quyidagi misolda tasvirlangan, unda Derived kontrollerga kiritilgan o'zgarishlar ko'rsatilgan:

    // ... ControllersAndActions.Infrastructure yordamida; namespace ControllersAndActions.Controllers ( umumiy sinf DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") yangi CustomRedirectResult/UrsBa "(Url/) qaytaradi Index" ); else ( Response.Write("Controller: Derived, Action method: ProduceOutput"); return null; ) ) ) )

    E'tibor bering, biz ActionResult-ni qaytarish uchun harakat usuli natijasini o'zgartirishga majbur bo'ldik. Agar biz MVC Framework bizning amallar usulimiz bajarilganda hech narsa qilishini istamasak, null qiymatini qaytaramiz, agar CustomRedirectResult misoli qaytarilmagan bo'lsa, shunday qildik.

    Birliklarni sinovdan o'tkazish kontrollerlari va harakatlar

    MVC Frameworkning ko'p qismlari birlik sinovini osonlashtirish uchun mo'ljallangan va bu, ayniqsa, harakatlar va kontrollerlar uchun to'g'ri keladi. Ushbu qo'llab-quvvatlashning bir nechta sabablari bor:

    Harakatlar va kontrollerlarni veb-serverdan tashqarida sinab ko'rishingiz mumkin. Kontekst ob'yektlariga ularning tayanch sinflari (masalan, HttpRequestBase) orqali kirish mumkin, ularni masxara qilish oson.

    Harakat usuli natijalarini sinab ko'rish uchun HTML belgilarini tahlil qilishingiz shart emas. Kutilgan natijalarni olishingizga ishonch hosil qilish uchun qaytarilgan ActionResult obyektini tekshirishingiz mumkin.

    Mijoz so'rovlarini taqlid qilish kerak emas. MVC Framework ning modelni bog'lash tizimi o'z parametrlarida kiritilgan ma'lumotlarni oladigan harakat usullarini yozish imkonini beradi. Harakat usulini sinab ko'rish uchun siz uni to'g'ridan-to'g'ri chaqirasiz va tegishli parametr qiymatlarini taqdim etasiz.

    Nazoratchilardan ma'lumotlarni yaratish bo'yicha kelgusi maqolalar sizga har xil turdagi harakatlar natijalari uchun birlik testlarini qanday yaratishni ko'rsatib beradi.

    Shuni unutmangki, birlik sinovi rasmning faqat bir qismidir. Ilovadagi murakkab xatti-harakatlar harakatlar usullari ketma-ket chaqirilganda yuzaga keladi. Birlik testi boshqa test yondashuvlari bilan birlashganda yaxshi ishlaydi.

    Endi siz qayta yo'naltirish harakatining maxsus natijasi qanday ishlashini bilganingizdan so'ng, MVC ramkasi tomonidan taklif qilingan uning ekvivalentiga o'tishingiz mumkin, bu yanada kuchliroq va Microsoft tomonidan sinchkovlik bilan sinovdan o'tgan. Derived controllerga kerakli o'zgartirish quyida keltirilgan:

    // ... ommaviy ActionResult ProduceOutput() ( yangi RedirectResult("/Basic/Index")ni qaytaring; ) // ...

    Shartli bayonot amal usulidan olib tashlandi, ya'ni ilovani ishga tushirgandan va /Derived/ProduceOutput kabi URL manziliga o'tgandan so'ng, brauzer /Basic/Index kabi URL manziliga yo'naltiriladi. Harakat usuli kodini soddalashtirish uchun Controller sinfi har xil turdagi ActionResult obyektlarini yaratish uchun qulay usullarni o'z ichiga oladi. Shunday qilib, masalan, Redirect() usuli natijasini qaytarish orqali yuqoridagi misoldagi kabi effektga erishishimiz mumkin:

    // ... ommaviy ActionResult ProduceOutput() ( Redirect("/Basic/Index"); ) // ...

    Harakat natijalari tizimida ayniqsa murakkab narsa yo‘q, lekin u oxir-oqibatda o‘qish oson, toza va izchil kod ishlab chiqarishga yordam beradi va birlik sinovi. Misol uchun, qayta yo'naltirish holatida, amal usuli Url xususiyati kutilgan maqsadni o'z ichiga olgan RedirectResult misolini qaytarishini tekshirishingiz mumkin.

    MVC Framework quyidagi jadvalda tavsiflangan ko'plab o'rnatilgan harakat natijalari turlarini belgilaydi:

    O'rnatilgan ActionResult turlari Turi Tavsif Controller sinfining yordamchi usullari
    Natijani ko'rish

    Belgilangan yoki standart ko'rinish shablonini ko'rsatadi

    Ko'rinish()
    PartialViewResult

    Belgilangan yoki standart qisman ko'rinish shablonini ko'rsatadi

    PartialView()
    RedirectToRouteResult

    Muammolar HTTP qayta yo'naltirish 301 yoki 302 - harakat usuli yoki belgilangan marshrut yozuvi, marshrutlash konfiguratsiyasiga muvofiq URL manzilini yaratish

    RedirectToAction()
    RedirectToActionPermanent()
    RedirectToRoute()
    RedirectToRoutePermanent()
    RedirectResult

    Berilgan URL manziliga HTTP 301 yoki 302 yoʻnaltirishni chiqaradi

    Qayta yo'naltirish()
    RedirectPermanent()
    ContentResult

    Brauzerga formatlanmagan matn ma'lumotlarini qaytaradi, qo'shimcha ravishda kontent turi sarlavhasini o'rnatadi

    Kontent()
    FileResult

    Ikkilik ma'lumotlarni (masalan, diskdagi fayl yoki xotiradagi bayt massivi) to'g'ridan-to'g'ri brauzerga uzatadi

    Fayl()
    JsonResult

    .NET obyektini ketma-ketlashtiradi JSON formati va uni javob sifatida yuboradi. Ushbu turdagi javoblar ko'proq Web API va AJAX vositalaridan foydalanganda hosil bo'ladi

    Json()
    JavaScriptResult

    Brauzer tomonidan bajarilishi uchun JavaScript manba kodining bir qismini yuboradi

    JavaScript()
    HttpUnauthorizedResult

    HTTP javob holati kodini 401 ("ruxsat berilmagan" degan ma'noni anglatadi) ga o'rnatadi, bu autentifikatsiya mexanizmini (shakllarni autentifikatsiya qilish yoki Windows autentifikatsiyasi) tashrif buyuruvchini tizimga kirishga taklif qiladi.

    Yo'q
    HttpNotFoundResult

    Qaytadi HTTP xatosi 404 kodi bilan - topilmadi (topilmadi)

    HttpNotFound()
    HttpStatusCodeResult

    Belgilangan HTTP kodini qaytaradi

    Yo'q
    EmptyResult

    Hech narsa qilmaslik

    Yo'q

    Bu turlarning barchasi ActionResult sinfidan kelib chiqadi va ularning ko'pchiligi Controller sinfida qulay yordamchi usullarga ega. Ushbu turdagi natijalardan foydalanishni keyingi maqolalarda ko'rsatamiz.

    Ta'riflangan ob'ekt juda foydali va kuchli vositadir. Ushbu ob'ektda bir nechta usullar mavjud, ularning tavsifi quyida keltirilgan:

    To'plamlar: Usullari: Xususiyatlari: Response.Cookie-fayllar to'plami

    Cookie to'plami cookie fayllari uchun qiymatlarni o'rnatadi. Belgilangan cookie fayllari mavjud bo'lmasa, u ularni yaratadi. Agar cookie mavjud bo'lsa, u yangi qiymatni oladi va eskisini yo'q qiladi.

    Response.Cookie(cookie) [(kalit) | . atributlar ] = qiymat

    Variantlar:

    • cookie - Cookie nomi
    • kalit - ixtiyoriy parametr. Agar u ko'rsatilgan bo'lsa, u holda cookie katalog (ichiga joylashtirilgan) va kalit qiymatlar to'plamidir.
    • atributlar - cookie-fayllarning o'zlari haqida ko'rsatilgan ma'lumotlar. Ushbu parametr quyidagilardan biri bo'lishi mumkin:
    • qiymat - Ushbu kalit yoki atributga tayinlanadigan qiymatni belgilaydi.
    IsmTavsif
    DomenFaqat yozib olish. Belgilangan bo'lsa, cookie fayllari faqat ushbu domen so'roviga binoan yuboriladi.
    Muddati tugaydiFaqat yozib olish. Cookie muddati tugash sanasi. Cookie fayllari mijozga yozilishi uchun bu sana belgilanishi kerak qattiq disk sessiya tugaganidan keyin. Agar bu atribut o'rnatilmagan bo'lsa, u holda cookie-faylning amal qilish muddati qabul qilinadi joriy sana. Cookie-fayllar sessiya tugagandan so'ng darhol tugaydi.
    HasKeyFaqat o'qish. Cookie-da berilgan kalit mavjud yoki yo'qligini ko'rsatadi.
    Yo'lFaqat yozib olish. Belgilangan bo'lsa, cookie fayllari faqat ushbu yo'ldan so'rov bo'yicha yuboriladi. Agar parametr o'rnatilmagan bo'lsa, dasturga yo'l ishlatiladi.
    XavfsizFaqat yozib olish. Cookie fayllari himoyalangan yoki himoyalanmaganligini bildiradi.

    Izoh:

    Agar kalit cookie quyidagi skriptda ko'rsatilganidek yaratilgan bo'lsa,

    keyin quyidagi sarlavha yuboriladi:

    Set-cookie: MYCOOKIE=TYPE1=shakar&TYPE2=cookie

    Agar siz mycookie-ga kalitlardan foydalanmasdan qiymat belgilasangiz, bu amal 1 va 2-turdagi kalitlarni yo'q qiladi. Masalan:

    Oldingi misolda, type1 va type2 kalitlari yo'q qilinadi va ularning qiymatlari yo'qoladi. Mycookie endi shokoladli marshmallow qiymatini o'z ichiga oladi.

    Shuningdek, ma'lum bir kalit mavjudligini quyidagi tarzda tekshirishingiz mumkin:

    Agar TRUE ko'rsatilgan bo'lsa, unda bunday kalit mavjud, agar FALSE, u yo'q.

    Javob berish.Yozish usuli

    Javob. O'zgaruvchi_yoki_qiymatni yozing

    Variantlar:

    • o'zgaruvchan_yoki_value - HTML orqali brauzer ekranida ko'rsatiladigan ma'lumotlar. Ushbu parametr VisualBasic Scripting Edition tomonidan qo'llab-quvvatlanadigan har qanday turdagi bo'lishi mumkin. Ya'ni, ma'lumotlar quyidagi turdagi bo'lishi mumkin: sana, satr, belgi, raqamli qiymatlar. Ma'nosi bu parametr%> birikmalarini oʻz ichiga olmaydi. Buning o'rniga siz %\> ekvivalent birikmasidan foydalanishingiz mumkin. Skript bajarilganda veb-server ushbu ketma-ketlikni talab qilinganiga aylantiradi.

    Quyidagi misol mijozga xabar chiqarish uchun Response.write usuli qanday ishlashini ko'rsatadi.

    Men sizga aytaman: Va sizning ismingiz

    Quyidagi misolda veb-sahifaga HTML teg qo'shiladi. Bu usul %> birikmasini o'z ichiga olmaydi, shuning uchun biz %\> ketma-ketligidan foydalanamiz. Shunday qilib, misol skripti:

    Chiqish qator bo'ladi:

    Response.Redirect usuli

    Response.Redirect URL (URL - Yagona Resurs Locator)

    Variantlar:

    • URL - Parametr universal resurs deskriptoridir. U brauzerni qachon yo'naltirish kerakligini ko'rsatadi.

    Izoh:

    Har qanday hodisa bu usul teglar va veb-sahifa o'rtasida e'tibor berilmaydi. Bu usul faqat HTML sahifaning boshida qo'llanilishi mumkin. Agar URL parametri yo'q bo'lsa, bu usul sarlavhani brauzerga o'tkazadi ushbu ob'ektdan quyidagi shaklda:

    HTTP/1.0 302 Ob'ekt ko'chirilgan manzil URL

    Response.End usuli

    Javob. End

    Izoh:

    Agar Response.Buffer xususiyati TRUE ga o'rnatilgan bo'lsa, Response.End usulini chaqirish buferni tozalaydi va undan ma'lumotlarni mijozga chiqaradi. Agar siz foydalanuvchiga ma'lumotlarni chiqarishni xohlamasangiz, quyidagi usulni chaqirishingiz kerak:

    Response.AddHeader usuli

    AddHeader usuli maxsus qiymatlarga ega HTML sarlavhasini qo'shadi. Ushbu usul har doim mijoz brauzeriga javobga yangi sarlavha qo'shadi. Bu usul mavjud sarlavhani yangisiga almashtirmaydi. Qo'shilgan sarlavhani olib tashlab bo'lmaydi.

    Ushbu usul faqat "ilg'or" vazifalar uchun qo'llaniladi.

    Response.AddHeader o'zgaruvchi_nomi, qiymat

    Variantlar:

    • o'zgaruvchi_nomi - yangi HTML sarlavhasi parametrlarining nomi.
    • qiymat - Sarlavhada eslab qoladigan qiymatni o'rnating.
    Eslatmalar:

    Usul to'g'ri ishlashi uchun o'zgaruvchi_nomida pastki chiziq belgisi (_) bo'lmasligi kerak. ServerVariables to'plami pastki chiziqni sarlavhadagi chiziqcha sifatida izohlaydi. Misol tariqasida quyidagi skript serverni HTML sarlavhasidan MY-HEADER deb nomlangan parametrni topishga majbur qiladi.

    HTTP protokoli barcha sarlavha parametrlari HTML sahifasining asosiy qismidan oldin o'tkazilishini talab qilganligi sababli, tavsif boshlanishidan oldin skriptingizda AddHeader usulini chaqirishingiz kerak.... Bitta istisno mavjud. Agar Bufer xususiyati rost bo'lsa, AddHeaderni skriptning istalgan joyiga yozishingiz mumkin, lekin Flush usuliga birinchi qo'ng'iroq qilishdan oldin. Aks holda, AddHeader usulini chaqirish xatolikni keltirib chiqaradi.

    Quyidagi ikkita .ASP fayli bu oxirgi nuqtani ko'rsatadi.

    sahifadagi matningiz

    IN bu misolda sahifa buferlanmagan. Skript ishlaydi, ammo AddHeader server mijozga HTML chiqishidan oldin chaqiriladi.

    bu sizning sahifangizdan ba'zi ma'lumotlar ...

    Ikkinchi misolda sahifa buferlanadi va natijada server skriptning o'zi tugamaguncha yoki Flush usuliga duch kelmaguncha mijozga matn chiqarmaydi. Ushbu usuldan WWW-Authenticate sarlavhasida bo'lgani kabi ba'zi bir sarlavha parametrlarining turli qiymatlari bilan bir nechta nusxalarini yuborish uchun foydalanishingiz mumkin.

    Response.AppendToLog usuli

    AppendToLog usuli veb-serverning hisobot fayli (log-fayl) oxiriga qator qo'shadi. Ushbu usulni kerakli darajada ko'p marta chaqirishingiz mumkin. Usulni har safar chaqirganingizda, siz ko'rsatgan qator server hisobot fayliga yoziladi.

    Response.AppendToLog qiymati

    Variantlar:

    • qiymat - veb-server hisobot fayliga qo'shiladigan matn. Bu qator vergul belgisini (,) o'z ichiga olmaydi. Bundan tashqari, qo'shilgan qatorning umumiy uzunligi 80 belgidan oshmasligi kerak.
    Eslatmalar:

    Bu funksiyadan foydalanish uchun IIS’dagi ushbu veb-server uchun “Kengaytirilgan logging xususiyatlari” panelida URI so‘rovi opsiyasi yoqilgan bo‘lishi kerak.

    Response.BinaryWrite usuli

    BinaryWrite usuli ma'lum ma'lumotni joriy HTTP chiqishiga hech qanday belgilarni o'zgartirmasdan yozish imkonini beradi. Ushbu usul dastur tomonidan talab qilinadigan ikkilik ma'lumotlar kabi qator bo'lmagan ma'lumotlarni chiqarish uchun foydalidir.

    Response.BinaryWrite ma'lumotlari

    Variantlar:

    • ma'lumotlar - HTTP chiqishi uchun mo'ljallangan ma'lumotlar.

    Agar sizda bayt massivini yaratadigan ob'ekt bo'lsa, siz ushbu massivni mijoz mashinasida ishlaydigan ba'zi ilovalarga o'tkazish uchun ushbu usulga quyidagi chaqiruvdan foydalanishingiz mumkin.

    Response.Clear usuli

    Clear usuli buferlangan barcha HTML chiqishini o'chiradi. Biroq, bu usul sarlavha bilan bog'liq bufer ma'lumotlarini o'chirmaydi. Xatolarni boshqarish uchun ushbu usuldan foydalanishingiz mumkin. Biroq, agar Response.Buffer xossasi to'g'ri bo'lmasa, bu usulni bajarish xatolikka olib keladi.

    Response.CacheControl xususiyati

    Bu xususiyat standart qiymatni bekor qiladi. Xususiyatni Umumiy qilib belgilaganingizda, proksi-server ASP tomonidan ishlab chiqarilgan chiqishni keshlashi mumkin.

    Response.CacheControl [= kesh nazorati sarlavha]

    Variantlar:

    • Keshni boshqarish sarlavhasi - Bu sarlavhani boshqarish opsiyasi umumiy yoki shaxsiy bo'lishi mumkin.
    Response.CharSet xususiyati

    CharSet xossasi HTML sarlavhasiga, kontent tipidagi qatorga belgilar kodlari jadvali nomini (masalan, WINDOWS-1251) qo'shish imkonini beradi.

    Response.CharSet kod_jadval_nomi

    Variantlar:

    • charset_name - Ushbu HTML sahifasi uchun belgilar to'plamini belgilaydigan qator. Ushbu kod jadvalining nomi HTML faylining sarlavhasiga "kontent turi" parametri ostida qo'shiladi.

    Response.Charset xususiyatidan foydalanmaydigan ASP sahifasi uchun sarlavhadagi "content-type" parametri quyidagicha bo'ladi:

    Kontent turi: matn/html

    Agar ASP faylida buyruq mavjud bo'lsa

    keyin sarlavhada kontent turi maydoni o'xshash bo'ladi

    Kontent turi: matn/html; charset=Windows-1251

    Izoh:

    Bu funksiya sarlavhaga har qanday qatorni kiritadi va uning haqiqiyligini tekshirmaydi.

    Agar sahifada bir nechta Response.Charset teglari bo'lsa, har bir keyingisi qiymatni o'ziga tegishli teglar bilan almashtiradi.

    Response.ContentType xususiyati

    ContentType xossasi HTML fayli mazmunining turini (turini) belgilash imkonini beradi. Agar bu xususiyat ishlatilmasa, sukut bo'yicha matn/html olinadi.

    Response.ContentType [=content_type]

    Variantlar:

    • content_type - HTML kontent turini tavsiflovchi qator. Bu satr odatda "tur/subtype" ko'rinishini oladi, bu erda tur kontentning asosiy toifasi va pastki turi kontent turini ko'rsatadi. Olish uchun to'liq ro'yxat qo'llab-quvvatlanadigan turlar - brauzeringiz hujjatlariga yoki HHTP spetsifikatsiyasiga qarang.

    Quyidagi misolda kontent turini Channel Definition Format (Push Channels) ga o‘rnatish tasvirlangan.

    Ikkinchi misol xususiyatni eng ko'p ma'lum bo'lgan qiymatlarga o'rnatishni ko'rsatadi.

    Response.Expires xususiyati

    Expires xususiyati shu vaqtgacha bo'lgan vaqtni belgilaydi HTML sahifa brauzer tomonidan keshlangan ma'lumotlar muddati o'tmagan deb hisoblanadi (saqlash muddati). Agar foydalanuvchi muddati tugamagan brauzerdan keshlangan sahifani so'rasa, brauzer uni to'g'ridan-to'g'ri keshdan qaytaradi.

    Javob. Muddati tugadi [=raqam]

    Variantlar:

    • raqam - sahifaning "muddati o'tgan" deb hisoblanishidan oldingi daqiqalardagi vaqt miqdori. Ushbu qiymatni 0 ga o'rnatish sabab bo'ladi bu sahifa darhol "kechiktirilgan" bo'ladi.

    Izoh:

    Agar bu xususiyat sahifada bir necha marta o'rnatilgan bo'lsa, eng kichik qiymat ishlatiladi.

    Response.ExpiresAbsolute xususiyati

    ExpiresAbsolute xossasi brauzer tomonidan keshlangan HTML-sahifaning amal qilish muddati tugagan deb hisoblanadigan vaqt va sanani belgilaydi (saqlash muddati tugagan). Agar foydalanuvchi muddati tugamagan brauzerdan keshlangan sahifani so'rasa, brauzer uni to'g'ridan-to'g'ri keshdan qaytaradi. Agar vaqt ko'rsatilgan bo'lsa (va sana ko'rsatilgan bo'lsa), unda ushbu sahifaning "yaroqlilik muddati" o'sha kunning yarim tunida tugaydi. Agar vaqt ham, sana ham ko'rsatilmagan bo'lsa, qiymat skript ishga tushirilgan kun va vaqtga qarab belgilanadi.

    Response.ExpiresAbsolute [= [sana] [vaqt]]

    Variantlar:

    • sana - "yaroqlilik muddati" ning amal qilish muddatini ko'rsatadi. Sana formati RFC-1123 standartiga mos kelishi kerak.
    • vaqt - sahifaning amal qilish muddati tugash vaqtini bildiradi. Bu qiymat sarlavha mijozga yuborilgunga qadar GMT (Grinvich vaqti) formatiga aylantiriladi.

    Izoh:

    Agar berilgan xususiyat sahifada bir necha marta aniqlangan bo'lsa, u holda "saqlash muddati" ning tugash vaqti barcha belgilangan qiymatlarning eng ertasi sifatida qabul qilinadi.

    Response.IsClientConnected xususiyati

    Bu xususiyat faqat o'qish uchun mo'ljallangan, ya'ni bu xususiyatga hech qanday qiymat belgilash mumkin emas. Bu xususiyat mijozning Response.Write ning oxirgi qismida belgilangan serverga ulangan yoki endi ulanmaganligini bildiradi.

    Response.IsClientConnected()

    Izoh:

    Bu xususiyat foydalanuvchi qachon ulanganligini va qachon serverdan uzilganligini aniqlash imkonini beradi. Masalan, server javob bergan va mijoz so'rov qilgan vaqt oralig'idagi vaqt oralig'i mijozning hali ham ulanganligiga ishonch hosil qiladi va skriptni bajarishni davom ettirish mantiqan.


    Bepul dasturlar va foydali maslahatlar dunyosi
    2024 whatsappss.ru