Jendela popup adalah salah satu metode tertua untuk menampilkan tambahan dokumen kepada pengguna. Secara umum, kamu hanya menjalankan: Show
…Dan akan terbuka jendela baru yang telah diberi URL, Kebanyakan peramban moderen akan membuka jendela baru bukannya jendela terpisah. Popup ada sejak jaman dahulu. Ide awalnya adalah untuk menampilkan konten lain tanpa menutup jendela utama. Saat ini, ada cara lain untuk melakukan hal tersebut: Kita bisa membuka konten secara dinamis dengan fetch dan menampilkannya di dalam sebuah 1 yang dihasilkan secara dinamis. Jadi popups adalah sesuatu yang tidak kita gunakan setiap hari.Kemudian, popups itu rumit di perangkat seluler, karena tidak menampilkan beberapa jendela secara serempak. Namun, ada tugas dimana popups masih digunakan, misalnya untuk otorisasi OAuth (masuk dengan Google/Facebook/…), karena:
Di masa lalu, situs jahat sering sekali menyalahgunakan popups. Sebuah halaman jahat dapat membuka banyak sekali jendela popup dengan iklan. Sehingga saat ini kebanyakan peramban mencoba untuk memblokir dan melindungi pengguna. Kebanyakan peramban akan memblokir popups jika dipangil dari luar aktifitas yang dipicu oleh pengguna seperti 2.Sebgai contoh:
Dengan cara ini pengguna agak terlindungi dari popups yang tidak diinginkan dan fungsionalitasnya tidak dinonaktifkan secara total. Bagaimana jika popups dibuka dari 2, tetapi setelah 4 ? Hal ini sedikit rumit.Coba kode berikut:
Popup terbuka di Chrome, namun diblokir di Firefox. …Jika kita mengurangi penundaan, popup akan bekerja di Firefox juga:
Perbedaannya adalah Firefox memperlakukan sebuah timeout antara 2000ms atau kurang dari itu untuk dapat diterima, namun lebih dari itu – hilangkan “kepercayaan”, Firefox berasumsi bahwa saat ini “diluar kendali pengguna”. Sehingga yang pertama akan diblokir, dan yang kedua tidak. Sintak untuk membuka popup adalah: 5: url : URL yang akan dimuat di dalam jendela baru.namanama dari jendela baru. Setiap jendela memiliki sebuah 6, dan dengan ini kita bisa secara spesifik menentukan jendela mana yang digunakan untuk popup. Jika telah ada jendela menggunakan nama tersebut – URL akan menjadi gantinya, jika tidak jendela baru terbuka.parameterKonfigurasi untuk jendela baru. Mengandung pengaturan, yang dipisahkan dengan koma. Tidak boleh ada spasi di dalam parameter, sebagai contoh: 7.Pengaturan untuk 8:
Ada juga sedikit dukungan untuk fitur spesifik peramban, Dimana biasanya tidak digunakan. Periksa window.open in MDN Sebagai contoh. Mari buka jendela dengan pengaturan fitur paling sedikit untuk melihat fitur mana yang akan diizinkan atau tidak oleh peramban:
Dalam contoh kebanyakan “fitur jendela” telah dinonaktifkan dan jendela berada di luar layar. Jalankan dan lihat apa yang terjadi. Kebanyakan peramban akan “Memperbaiki” hal-hal yang ganjil seperti 0 yang kosong dan 9 yang keluar jendela. Sebagai contoh, Chrome membuka semacam jendela dengan lebar/tinggi penuh. sehingga akan menempati layar penuh.Mari tambahkan opsi penempatan normal dan masuk akal untuk koordinat 9, 0, 1, 2:
Kebanyakan peramban menampilkan contoh diatas sesuai dengan yang diinginkan. Aturan untuk penggaturan yang dihilangkan:
Pemanggilan 8 mengembalikan referensi ke jendela baru. referensi itu bisa digunakan untuk memanipulasi properti, merubah lokasi dan melakukan hal lain yang lebih dari itu.Pada contoh ini, kita menghasilkan popup konten dari Javascript:
Dan disini kita memodifikasi konten setelah dimuat:
Penting untuk dicatat: Segera setelah 9, saat itu jendela baru belum dimuat. Hal itu didemonstrasikan oleh 0 di baris 1, Sehingga kita menunggu untuk 2 untuk memodifikasinya. Kita juga bisa menggunakan handler 3 untuk 4.Same origin policy Jendela dapat dengan leluasa mengakses konten satu sama lain hanya jika mereka datang dari asal yang sama (protocol://domain:port yang sama) Jika tidak, semisal jendela utama datang dari 5, dan popup datang dari 6, hal ini mustahil dilakukan demi alasan keamanan penguna. Untuk lebih detail lihat bagian Cross-window communication.Popup mungkin mengakses “pembuka” jendela menggunakan referensei 7. Ini akan menjadi 8 dari semua jendela kecuali popup. Jika code dibawah dijalankan, maka konten pembuka jendela saat ini akan dibuah menjadi “Test”:
Sehingga terjadi koneksi dua arah antara jendela: jendela utama dan popup memiliki sebuah referensi satu sama lain. Untuk menutup sebuah jendela: 9.Untuk memeriksa apakah jendela sudah tertutup: 0.Secara teknis, metode 1 tersedia pada setiap 2, namun 3 diabaikan oleh kebanyakan beramban jika 2 tidak dibuat dengan 9. Jadi hanya akan bekerja untuk popup.properti 6 bernilai 7 jika jendela ditutup. Hal ini berguna untuk memeriksa apakah popup (atau jendela utama) masih terbuka atau tidak. seorang pengguna bisa menutupnya kapan saja, dan kode kita mengambil pertimbangan untuk diperhitungkan.Code dibawah ini dimuat dan kemudian menutup jendela:
Ada metode untuk memindahkan/merubah ukuran sebuah jendela: 8Memindahkan jendela ke posisi 9 piksel ke kanan dan 0 piksel kebawah. Nilai negatif dapat diterima (untuk memindahkan kiri/atas). 1Memindahkan jendela ke koordinat 2 di layar. 3Merubah ukuran jendela dengan memberikan 0 ke ukuran sat ini. Nilai negatif dapat diterima. 5Merubah ukuran jendela ke ukuran yang diberikan.Ada juga 6 event.Hanya popups Untuk mencegah penyalahgunaan, peramban biasanya memblokir metode ini. Mereka hanya bekerja baik pada popup yang kami buka, yang tidak memiliki tab tambahan. Tidak ada modifikasi/maksimasi Javascript tidak memiliki cara untuk mengecilkan atau memaksimalkan sebuah jendela. fungsi OS-level ini tersembunyi dari pengembang frontend metode Move/resize tidak dapat berjalan pada jendela maximized/minimized. Kami telah membicarakan tentang mengulir jendela di bagian Window sizes and scrolling. 7 : Gulir jendela 9 piksel ke kanan dan 0 kebawah terhadap posisi gulir saat ini. Nilai negatif dapat diterima. 0 : Scroll the window to the given coordinates 2. 2Mengulir jendela untuk membuat 3 terlihat diatas atau di bawah dari 4, Kemudian ada juga event 5.Secara teori, ada metode 6 dan 7 untuk memfokuskan/tidak fokus sebuah jendela. Dan ada juga even 8 yang mengizinkan untuk menangkap momen saat pegunjung fokus pada jendela dan berpindah ke tempat lain.Meskipun, dalam praktiknya hal ini dibatasi, karena pada masa lalu halaman jahat menyalahgunakannya. Sebagai contoh, lihat code ini: 0Mesikipun pengguna mencoba untuk berpindah dari jendela ( 9), hal ini membawa jendela kembali fokus. Tujuanya adalah untuk “mengunci” pengguna selama berada di dalam 2.Sehingga peramban harus memperkenalkan banyak batasan kode seperti ini dan melindungi pengguna dari iklan dan halaman jahat. Mereka bergantung ke peramban. Sebagai contoh, sebuah peramban mobile pada umumnya mengabaikan 6. Dan fokus tidak bekerja saat sebuah popup terbuka di dalam tab yang terpisah daripada membuka sebuah jendela baru.Masih ada beberapa kasus pengunaan menggunakan pangilan sejenis untuk menjalankan dan berguna. Sebagai contoh:
Jendela popup jarang digunakan, karena ada beberapa alternatif: memuat dan menampilkan informasi in-page, atau di dalam iframe. Jika kita akan membuka popup, cara yang benar adalah dengan memberitahu pengguna tentang hal ini. Sebuah ikon “jendela terbuka” dekat tautan atau tombol yang mengizinkan pengunjung untuk tetap fokus dan ingat kedua jendela.
Untuk menutuo popup: gunakan pemanggilan 1. Juga pengguna mungkin menutupnya (seperti jendela yang lain). 9 adalah 7 setelahnya. |