Saya sedang mengerjakan aplikasi web satu halaman, yang biasanya akan digunakan pada perangkat seluler. Salah satu fiturnya adalah mode peta, yang sementara mengambil alih seluruh jendela browser; skala jarak dan beberapa kontrol terpasang pada empat sudut peta. Berikut adalah screenshot kecil dari peta sehingga Anda dapat mengetahui apa yang saya bicarakan:
Peta diimplementasikan sebagai <div>
dengan position: fixed
dan keempat koordinat nol; Saya juga mengatur sementara <body>
untuk overflow: hidden
sementara peta terlihat untuk menangani kasus tampilan aplikasi yang mendasarinya digulir menjauh dari asal. Itu cukup untuk membuat peta berfungsi persis seperti yang saya inginkan di browser desktop. Peramban seluler juga mengharuskan saya memberikan tag meta viewport dengan sesuatu seperti "width=device-width,user-scalable=no"
untuk membuat area jendela yang terlihat persis sama dengan viewport.
Ini semua bekerja dengan indah beberapa tahun yang lalu ketika saya awalnya menulis aplikasi ini, tetapi di suatu tempat sepanjang iOS Safari berhenti menghormati salah satu opsi meta viewport yang melibatkan penskalaan - tampaknya terlalu banyak situs yang salah menerapkan tag, menghasilkan teks yang sangat kecil, namun tidak nyaman. Saat ini, jika Anda mengaktifkan peta di peramban ini, Anda akan mendapatkan tampilan yang sedikit diperbesar, yang memotong tombol-tombol di kanan dan bawah - dan Anda tidak dapat melakukan apa-apa, karena semua sentuhan ditafsirkan sebagai gerakan zoom / pan untuk peta, daripada pengguliran browser. Peta tidak terlalu berguna tanpa fitur yang diakses melalui tombol-tombol itu - dan tanpa tombol kanan atas, Anda bahkan tidak bisa menutup peta. Satu-satunya jalan keluar adalah memuat ulang halaman, yang dapat menyebabkan hilangnya data yang belum disimpan.
Saya pasti akan menambahkan penggunaan history.pushState
/ onpopstate
agar overlay peta berperilaku seperti halaman terpisah. Anda bisa keluar dari mode peta menggunakan tombol Kembali browser - tetapi itu tidak mengatasi hilangnya fungsionalitas karena tombol yang hilang.
Saya telah mempertimbangkan menggunakan .requestFullscreen()
untuk menerapkan hamparan peta, tetapi tidak didukung di mana-mana bahwa aplikasi akan dapat digunakan. Secara khusus, tampaknya tidak berfungsi sama sekali pada iPhone, dan pada iPad Anda mendapatkan bilah status dan tombol 'X' besar yang menumpangkan konten Anda - skala jarak saya kemungkinan tidak akan dapat dibaca lagi. Lagipula itu bukan apa yang sebenarnya saya inginkan - saya perlu jendela penuh , bukan layar penuh.
Bagaimana cara membuat tampilan jendela penuh bekerja pada browser modern? Semua informasi yang saya dapat temukan pada subjek berbicara tentang penggunaan tag meta viewport, tetapi seperti yang saya sebutkan tidak lagi berfungsi.