mobil xrom scrollda qayta o'lchamlarini o'chiradi

Men krom mobil brauzerini galaxy s4, android 4.2.2-da foydalanayapman va nima uchun men sahifani pastga aylantirganda har safar jquery.cycle2 slide-shundan olingan rasmlarni o'lchamlarini tekshirish uchun qayta o'lchamdagi tadbirni yoqadi.

Nima uchun bunday bo'lishi mumkinligi haqida biron bir fikr bormi?

58
Qayta o'lchamdagi voqea bilan bog'liq muammo yuzaga keldi, lekin men element balandligi versiya portfelining 100% ga o'rnatilgandan so'ng, kaydırmada qayta hisoblab chiqilgan.
qo'shib qo'ydi muallif KobeBryant, manba

7 javoblar

Bu juda g'alati, lekin men uni boshqa brauzerlarda ko'rganman. Siz shunga o'xshash tarzda shug'ullanishingiz mumkin.

var width = $(window).width(), height = $(window).height();

keyin siz qayta o'lchamlarini olayotuvchi sifatida ishlating.

if($(window).width() != width && $(window).height() != height){
  //Do something
}

Funktsiyalaringizning hammasini bilmayman va buning hammasini bilmayman, lekin bulardan o'zingni tiyish kerak.

59
qo'shib qo'ydi
Kris uchi uchun rahmat!
qo'shib qo'ydi muallif CWitty, manba
Muammo scrollbar yashirinish yoki ekranning balandligini o'zgartirishga olib keladi, shuning uchun $ (window) .resize() ni ishga tushirish sabab bo'ladi. Men tahrir qilishni taklif qildim.
qo'shib qo'ydi muallif Sander Koedood, manba
Faqat iOS Safari bilan ham shu kabi xatti-harakatlarni kuzatganimizni qo'shishni istadik.
qo'shib qo'ydi muallif Kris Krause, manba
| | bo'lishi kerak ning o'rniga &&
qo'shib qo'ydi muallif Maysam, manba
chunki agar uning holati o'zgartirilsa, kenglik o'zgarishini nazorat qilish kerak. Bundan tashqari, vaziyat kengligi va balandligi o'zgarganiga qadar tetiklantirilmaydi. bu har doim ham bo'lmasa-da, lekin deyarli barcha ekran o'lchamlari kenglik o'zgarishini o'z ichiga oladi, shuning uchun men balandlik qismini ishlatmaslikni tavsiya qilaman. if ($ (window) .width() = = kenglik) {}
qo'shib qo'ydi muallif Imran Bughio, manba
Mening kunimni saqladi! Men faqat kenglikni tekshirishim kerak
qo'shib qo'ydi muallif Yuriy Kvartsyanyy, manba

Faqat qiziqish uchun men uni qayta ishlashga harakat qilardim va to'g'riroq bo'lsam, navigatsiya chrome baridan kelib chiqadi.

Siz pastga aylantirilganda va brauzer navigatsiya panelini yashirganingizda, u deraza qayta o'lchamlarini ishlab chiqaradi, lekin bu to'g'ri, chunki bundan keyin brauzer nav navbati qoldirilgan bo'sh joy tufayli biz katta oynaning o'lchamiga egamiz.

Related artcile: https://developers.google.com/web/updates/2016/12/url-bar-resizing

Hurmat bilan!

28
qo'shib qo'ydi
Yaxshi fikrlash! Bu to'g'ri javob bo'lishi kerak!
qo'shib qo'ydi muallif evilReiko, manba
Bu mo'ljallangan xatti-harakatlar bo'ladimi yoki yo'qmi, biz uni qayta o'lchamlarini funktsiyasini yoqish istamaymiz. Xo'sh, bu erda qanday echim bor, boshqa javoblar taklif qilgan uzoq vaqt oraliq kodning yo'lidan pastga tushmasdan?
qo'shib qo'ydi muallif Studocwho, manba
Javob uchun mening havolamni qo'shib qo'ydim. Bu xatti-harakatni mobil qurilmada Chrome uchun qanday bajarish kerakligi haqida batafsil ma'lumot beradi.
qo'shib qo'ydi muallif AlbertoFdzM, manba

Bilmadim, u hali qiziqarli, lekin mening halim shunday:)

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

var document_width, document_height;

$(document).ready(function()
{
        document_width=$(document).width(); document_height=$(document).height();
   //Do something
}

$(window).resize(function()
{
    if(document_width!=$(document).width() || document_height!=$(document).height()) 
    {
        document_width=$(document).width(); document_height=$(document).height();
       //Do something
    }
}       
</div> </div>
3
qo'shib qo'ydi
Menimcha $ (window) dan foydalaning .height() $ (document) .height() va kenglik.
qo'shib qo'ydi muallif Tarek El-Mallah, manba

Savol allaqachon javob berilgandi, lekin bu savol javobli saytlar masalasini keltirib chiqarmagani uchun men bu haqda ba'zi ma'lumotlarni qo'shmoqchiman.

Chrome-dagi ushbu savolga Android-dagi tezkor veb-saytni ishlab chiqishda duch kelganman. Oynani o'lchamoqchi bo'lganimda, menyularni yashirishni xohlayman (ba'zi joylashtirish elementlari to'g'ri joylashuvga ega bo'lishi kerak edi), ammo Chrome uchun android xatti-harakati o'gartirishga o'tishni boshlash uchun biroz og'ir bo'ldi.

OnOrientationChange-dan foydalanishni boshlash uchun bu variant sezgir emas, chunki bu ish stoli kompyuterda yo'nalish o'zgarishi yo'q, ammo men hali ham muntazam kompyuterlar, planshetlar va smartfonlarda ishlaydigan kodni talab qildim.

Men brauzerni koklashni boshlagan bo'lar edim, lekin hozirgacha bulardan qochishga muvaffaq bo'ldim.

Men CWitty tomonidan taklif qilingan echimni amalga oshirishga harakat qildim, lekin yuqoriga yoki pastga siljish aslida ishlamay qolgan balandlikdagi o'zgarishni keltirib chiqaradi.

Men balandligi o'zgarganda emas, kenglik o'zgarganda menyuni yashiradigan shartni qo'shib tugatdim. Bu mening ishimda ishlaydi, chunki men faqatgina kengligi o'zgartirilganda menyuni qayta yozishingiz kerak.

1
qo'shib qo'ydi
Mening taklifim balandlikni tekshirishni bekor qilish va faqat kenglikni tekshirish bo'ladi.
qo'shib qo'ydi muallif bertie, manba

Turli xil mobil brauzerlarda resize ni o'chirishi mumkin bo'lgan ko'p narsalar mavjud.

I know it's not ideal to link to an external resource, but QuirksMode has a readable table that I don't want to duplicate (or maintain) here: http://www.quirksmode.org/dom/events/resize_mobile.html

Faqat misol berish uchun bizni olib kelgan: ehtimol, ko'pgina brauzerlarda, yumshoq klaviatura ochilib, voqea o'chiriladi.

0
qo'shib qo'ydi

Mobil qurilmalarda brauzerlar tez-tez gorizontal yuqori navigatsiya satrini yashirganda, kimdir pastga o'girilganda va uni yuqoriga ko'tarishda yana ko'rsatishadi. Bunday xatti-, mijoz o'lchamiga ta'sir qiladi, qayta o'lchamlarini olib tashlash hodisasi. Faqat balandlik o'zgarishlari yoki kamida bu balandlik o'zgarishi sababli kodingizni bajarmasligini nazorat qilishingiz kerak.

0
qo'shib qo'ydi

This is a duplicate of Javascript resize event on scroll mobile

In order to fix it, use onOrientationChange and window.orientation property. See the related answer: here

0
qo'shib qo'ydi
Noto'g'ri. Bu savol kutilmagan tarzda mobil brauzerda qayta o'lchamdagi voqea haqida.
qo'shib qo'ydi muallif user2867288, manba
Aslida bu noto'g'ri emas. OnOrientationChange-dan foydalanib, siz qonuniy vaqtinchalik hal qilishdir, chunki siz ekranni qayta o'lchash uchun hodisalar olovini eng ko'p ko'rganingizda mobil qurilmada. Bu javob yaxshi. Buning sababini bilmayman, chunki bu boshqa narsaga ham ega emas - bu brauzer xromlari paydo bo'lishi/yo'qolishi bilan o'lchamlarini o'zgartirishga olib keladigan voqealar (ATM mening muammom). Aks holda bu yaxshi echim bo'ladi.
qo'shib qo'ydi muallif dudewad, manba