JavaScript - Window/Document Events

Hai there, para penggemar coding! Hari ini, kita akan melihat dunia menarik JavaScript events, khususnya fokus pada Window dan Document events. Sebagai guru komputer yang ramah di lingkungan sekitar Anda, saya di sini untuk mengorbit Anda dalam perjalanan ini dengan banyak contoh dan penjelasan. Jadi, ambil minuman favorit Anda, duduk nyaman, dan mari kita mulai!

JavaScript - Window/Document Events

Window Events

Window events adalah tindakan yang terjadi terkait dengan jendela browser itu sendiri. Peristiwa ini bisa sangat berguna untuk membuat aplikasi web dinamis dan responsif. Mari kita jelajahi beberapa window events yang paling umum:

1. load

Peristiwa load terjadi ketika seluruh halaman, termasuk semua sumber daya tergantung seperti stylesheet dan gambar, telah selesai dimuat. Ini biasanya digunakan untuk memastikan bahwa semua elemen tersedia sebelum menjalankan skrip.

window.addEventListener('load', function() {
console.log("Halaman sepenuhnya dimuat!");
});

Dalam contoh ini, kita menambahkan event listener ke objek window. Ketika peristiwa 'load' terjadi, fungsi kami akan berjalan, mencatat pesan ke console.

2. resize

Peristiwa resize dipicu saat jendela browser diubah ukurannya. Ini bisa berguna untuk mengatur layout atau menghitung kembali dimensi.

window.addEventListener('resize', function() {
console.log("Jendela diubah ukurannya ke: " + window.innerWidth + "x" + window.innerHeight);
});

Di sini, kita mencatat dimensi baru jendela saat itu diubah ukurannya. Ini bisa berguna untuk penyesuaian design responsif.

3. scroll

Peristiwa scroll terjadi saat pengguna menggeser di jendela. Ini bisa digunakan untuk implementasi infinite scrolling atau menampilkan/sembunyikan elemen berdasarkan posisi scroll.

window.addEventListener('scroll', function() {
let scrollPosition = window.scrollY;
console.log("Digulir ke posisi: " + scrollPosition);

if (scrollPosition > 300) {
document.getElementById('backToTop').style.display = 'block';
} else {
document.getElementById('backToTop').style.display = 'none';
}
});

Dalam contoh ini, kita menampilkan tombol 'Back to Top' saat pengguna menggeser lebih dari 300 pixel ke bawah halaman.

4. unload

Peristiwa unload dipicu saat pengguna meninggalkan halaman. Ini bisa digunakan untuk tugas pembersihan atau meminta konfirmasi pengguna sebelum meninggalkan halaman.

window.addEventListener('unload', function(event) {
event.preventDefault();
event.returnValue = '';
});

Kode ini akan meminta konfirmasi pengguna dengan dialog konfirmasi saat mereka mencoba meninggalkan halaman. Ingat untuk menggunakan ini secara hati-hati, karena itu bisa membuat pengguna kesal!

Document Events

Document events terkait dengan dokumen HTML itu sendiri. Peristiwa ini memungkinkan kita untuk berinteraksi dengan konten halaman dalam berbagai cara. Mari kita lihat beberapa document events kunci:

1. DOMContentLoaded

Peristiwa DOMContentLoaded terjadi saat dokumen HTML awal telah sepenuhnya dimuat dan diuraikan, tanpa menunggu sumber daya eksternal selesai dimuat.

document.addEventListener('DOMContentLoaded', function() {
console.log("DOM siap!");
document.getElementById('myButton').addEventListener('click', function() {
alert("Tombol diklik!");
});
});

Peristiwa ini sering dipilih lebih daripada window.load karena ia tidak menunggu gambar dan sumber daya lain selesai dimuat, memungkinkan eksekusi skrip lebih cepat.

2. click

Peristiwa click dipicu saat elemen diklik. Ini adalah salah satu peristiwa paling umum yang Anda kerjakan.

document.getElementById('myButton').addEventListener('click', function(event) {
console.log("Tombol diklik di koordinat: " + event.clientX + ", " + event.clientY);
event.target.style.backgroundColor = 'red';
});

Dalam contoh ini, kita mencatat koordinat klik dan mengubah warna latar belakang tombol saat itu diklik.

3. keydown dan keyup

Peristiwa ini dipicu saat tombol ditekan (keydown) atau dilepaskan (keyup).

document.addEventListener('keydown', function(event) {
console.log("Tombol ditekan: " + event.key);
if (event.key === 'Enter') {
document.getElementById('submitButton').click();
}
});

Kode ini mencatat setiap penekanan tombol dan mensimulasikan klik tombol submit saat tombol Enter ditekan.

4. mouseover dan mouseout

Peristiwa ini dipicu saat pointer mouse memasuki (mouseover) atau meninggalkan (mouseout) elemen.

let hoverElement = document.getElementById('hoverMe');

hoverElement.addEventListener('mouseover', function() {
this.style.backgroundColor = 'yellow';
});

hoverElement.addEventListener('mouseout', function() {
this.style.backgroundColor = '';
});

Ini menciptakan efek hover sederhana, mengubah warna latar belakang elemen saat mouse di atasnya.

Tabel Metode Event

Berikut adalah tabel praktis yang menggabungkan metode yang kita diskusikan:

Peristiwa Deskripsi Contoh
load Terjadi saat halaman sepenuhnya dimuat window.addEventListener('load', function() {...})
resize Terjadi saat jendela diubah ukurannya window.addEventListener('resize', function() {...})
scroll Terjadi saat jendela digeser window.addEventListener('scroll', function() {...})
unload Terjadi saat meninggalkan halaman window.addEventListener('unload', function(event) {...})
DOMContentLoaded Terjadi saat DOM siap document.addEventListener('DOMContentLoaded', function() {...})
click Terjadi saat elemen diklik element.addEventListener('click', function(event) {...})
keydown Terjadi saat tombol ditekan document.addEventListener('keydown', function(event) {...})
keyup Terjadi saat tombol dilepaskan document.addEventListener('keyup', function(event) {...})
mouseover Terjadi saat mouse memasuki elemen element.addEventListener('mouseover', function() {...})
mouseout Terjadi saat mouse meninggalkan elemen element.addEventListener('mouseout', function() {...})

Dan itu adalah, teman-teman! Kita telah melihat dasar Window dan Document events di JavaScript. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba events ini dalam proyek Anda sendiri. Sebelum Anda tahu, Anda akan membuat halaman web interaktif dan dinamis seperti seorang pro!

Selamat coding, dan semoga event Anda selalu terbakar seperti yang diharapkan!

Credits: Image by storyset