Efek Animasi Loading dengan Event `beforeunload`
Sebelumnya Saya pernah menuliskan cara membuat efek animasi loading pada saat halaman berpindah dengan cara menyeleksi semua tautan internal untuk memicu tampilnya overlay/tabir animasi saat tautan tersebut diklik. Tapi metode ini memiliki dua kelemahan:
Pertama, menyeleksi semua tautan internal dengan selektor atribut sebenarnya tidak begitu baik karena selektor atribut itu performanya buruk.
Ke dua, jika kita mengeklik tautan internal yang memiliki atribut target='_blank'
di dalamnya, tautan tersebut akan terbuka di tab baru. Tapi efek animasi memuat halaman justru terpicu pada halaman sebelumnya, padahal kita tidak menghendaki itu ⇒ #c8644667892985451185. Saya sudah berhasil mengakalinya dengan cara memfilter tautan internal tersebut dengan cara mengecualikan tautan yang memiliki atribut target='_blank'
menggunakan jQuery .filter()
:
$internalLinks.filter(':not([target="_blank"])').click(function() {});
Tapi mulai sekarang lebih baik kita lupakan cara lama tersebut. Kita bisa menciptakan efek animasi perpindahan halaman dengan aman menggunakan event beforeunload
.
beforeunload adalah event yang akan terpicu saat sebuah halaman mulai berpindah karena seorang pengguna mengeklik tautan tertentu (atau sekedar memuat ulang halaman dengan cara mengeklik tombol Reload pada peramban) yang memicu mereka untuk keluar dari halaman tersebut:
$(window).on("beforeunload", function() {
// Menampilkan tabir animasi dengan efek `.fadeIn()`...
});
Kali ini tabir animasi ditampilkan bukan karena terpicu oleh aksi klik pada tautan melainkan karena aksi halaman yang mulai berpindah. Sehingga kita bisa merancang ulang tabir animasi perpindahan halaman dengan cara ini:
Anggaplah jQuery sudah terpasang di blog kita. Pertama, masuklah ke halaman editor HTML template, kemudian letakkan kode CSS ini di atas ]]></b:skin>
atau </style>
:
#page-loader {
position:fixed !important;
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
z-index:9999;
background-color:black;
color:white;
padding:1em 1.2em;
display:none;
}
Kemudian sisipkan kode ini di atas </body>
:
<script>
//<![CDATA[
// Menyisipkan markup tabir animasi
$(document.body).append('<div id="page-loader">Loading...</div>');
// Saat halaman terpicu untuk berpindah/keluar menuju halaman lain...
$(window).on("beforeunload", function() {
// ... tampilkan tabir animasi dengan efek `.fadeIn()`
$('#page-loader').fadeIn(1000).delay(6000).fadeOut(1000);
});
//]]>
</script>
Klik Simpan Template.
Demo
Labels: Dasar, JavaScript, jQuery
48 Comments:
wah!!! apa-apan ini www.dte.web.id
keknya baru??? :-bd :Q
By Beben Koben, at Friday, January 18, 2013 at 8:30:00 PM GMT+7
Makasih ya mas :D
By Adi Nugraha Y, at Friday, January 18, 2013 at 8:34:00 PM GMT+7
bro jika saya mau menambahkan sedikit animasi2 gitu gimana caranya ya ? supaya terlihat lebih keren dan menarik lagi
By tes, at Friday, January 18, 2013 at 8:57:00 PM GMT+7
Kak, kok aku malah gak berhasil nerapin yang baru ini, tapi yang lama malah bisa ?
By IRIL SAGITA, at Friday, January 18, 2013 at 9:12:00 PM GMT+7
Tinggal dikreasikan sendiri. Misalnya diberi latar animasi:
#page-loader {
position:fixed !important;
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
z-index:9999;
background:yellow url('img/loading.gif') no-repeat 50% 50%;
font:0/0 a;
text-shadow:none;
padding:1em 1.2em;
display:none;
}
Demo: http://jsfiddle.net/tovic/78pNK/1/
By Taufik Nurrohman, at Friday, January 18, 2013 at 9:19:00 PM GMT+7
Pa mungkin blog aku gak suport ama :
$(document.body)
soalnya pada emoticon yang ada code $(document) juga gak bisa berfungsi, mohon kak taufik bantuannya ?
By IRIL SAGITA, at Friday, January 18, 2013 at 9:21:00 PM GMT+7
document.body itu sangat mendasar, seharusnya sih bisa. Mungkin kamu memakai versi JQuery yang lama, yang tidak mendukung .on(). Sekarang malah sudah update ke versi 2.0.0b. Cuma mungkin, karena masih belum stabil jadi Saya belum berani ganti. Di halaman demo Saya memakai versi 1.9.0
By Taufik Nurrohman, at Friday, January 18, 2013 at 9:28:00 PM GMT+7
jQuery yang mana kak yang harus di ganti, kalau anda berkenan mohon untuk melihat di :
sagitasoft.com
By IRIL SAGITA, at Friday, January 18, 2013 at 9:35:00 PM GMT+7
Apakah jQuery versi 1.7.1 belum mendukung kak, saya memakai versi itu ?
By IRIL SAGITA, at Friday, January 18, 2013 at 10:32:00 PM GMT+7
Hehehe... jangan dipasang sekaligus begitu...
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' type='text/javascript'></script>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' type='text/javascript'></script>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js' type='text/javascript'></script>
Ambil saja salah satu versi yang terbaru, lalu buang sisanya:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js' type='text/javascript'></script>
By Taufik Nurrohman, at Saturday, January 19, 2013 at 7:36:00 AM GMT+7
Oh iya, maaf kak memang kesalahannya ada di situ, and sekarang udah berhasil. :D
makasih banget kak taufik ?
By IRIL SAGITA, at Saturday, January 19, 2013 at 9:46:00 AM GMT+7
mas, kok saya gagal ya?
terus ketika pasang jquery 1.9.0 kok fitur slide panel komentar jadi g berfungsi?
By Secret Blog, at Sunday, January 20, 2013 at 3:16:00 PM GMT+7
Pakai cara sebelumnya saja kalau cara ini tidak berhasil.
By Taufik Nurrohman, at Sunday, January 20, 2013 at 9:55:00 PM GMT+7
maksih gan infonya,saya akan belajar banyak dari sini :)
By Unknown, at Thursday, January 31, 2013 at 11:34:00 AM GMT+7
baru ketemu web ini. dari kemarin2 hanya bisa ber-angan2 memliki blog dengan fitur web standar yg dilengkapi jquey, ajax dkk. :-bd salam kenal, dari pendatang baru. template om sedkit saya modifkasi menambahkan fixed top menu > blog.obengkumana.com,
By obengkumana, at Friday, February 1, 2013 at 3:18:00 PM GMT+7
Ehm... itu bukan template buatan Saya. Saya jarang membuat template. Mungkin punya Satank Mkr. Salam kenal juga.
By Taufik Nurrohman, at Friday, February 1, 2013 at 8:21:00 PM GMT+7
permisi mas ,
pengen tanya ,
kenapa yah efek loading ini tidak bisa atau sama sekali tidak bisa dimasukkan elemen css lainnya ,
seperti css loading ,
seperti demo ini : http://www.alessioatzeni.com/wp-content/tutorials/html-css/CSS3-loading-animation-loop-set2/index.html
kenapa gak bisa yah mas..?
need help :)
By Anonymous, at Monday, February 25, 2013 at 10:24:00 PM GMT+7
Letakkan kode HTML di dalam <div id="page-loader"></div>, dan sertakan kode CSS animasi loading di halaman tersebut di bawah kode CSS yang Saya tuliskan.
By Taufik Nurrohman, at Tuesday, February 26, 2013 at 8:28:00 AM GMT+7
wuih keren tapi url gambar yang bagus cari dimana yah ? :-a
By Anonymous, at Wednesday, March 6, 2013 at 7:03:00 PM GMT+7
gan kok di blog saya jadi tulisan loading... gak seperti di demo ?
By Bima A., at Thursday, March 21, 2013 at 5:13:00 PM GMT+7
JQuery tidak akan mempengaruhi validasi.
By Taufik Nurrohman, at Friday, March 22, 2013 at 2:29:00 PM GMT+7
mas, mau tanya aku udah praktekin cara ini tapi hanya bisa berhasil saat klik link dari homepage saja, sedang saat di halaman lain tetep loading seperti biasa, cara mengatasinya bagaimana ya mas??? makasih ya sebelumnya... :)
By Unknown, at Tuesday, March 26, 2013 at 2:26:00 PM GMT+7
pakek css aja...
lebih keren... :p
By Dixy, at Tuesday, March 26, 2013 at 8:17:00 PM GMT+7
Mungkin kode CSS-nya keliru dimasukkan ke dalam tag <style> yang berada di dalam tag kondisional.
By Taufik Nurrohman, at Wednesday, March 27, 2013 at 8:18:00 AM GMT+7
iya mas, tp kalo saya letakkan diatas ]]> juga ga bisa bahkan di homepage nya pun hanya loading seperti biasa...
By Unknown, at Wednesday, March 27, 2013 at 9:02:00 AM GMT+7
mas, udah bisa kok tapi saya pake tutor yang menggunakan jQuery kalau yg ini udah dicoba beberapa kali ga bisa juga...:) makasih ya mas...
By Unknown, at Wednesday, March 27, 2013 at 3:11:00 PM GMT+7
Mas saya udh pasang.
mau tanya ni,
sama kyk prtanyaan Mas "Jefrry, dsitu mas kan udh jawab tu prtnyaanya. Nah saya udh coba mas. Tapi kok animasi loadingnya gamuncul :'(
By Unknown, at Tuesday, April 30, 2013 at 7:46:00 AM GMT+7
Mungkin ini terkait ⇒ /2011/12/membuat-efek-animasi-loading-sederhana.html?showComment=1366260641986#c7531280663956572640
By Taufik Nurrohman, at Tuesday, April 30, 2013 at 9:46:00 AM GMT+7
masi gabisa mas.
.. Ok lah mas gpp. Terima Kasih. :)
By Unknown, at Tuesday, April 30, 2013 at 1:38:00 PM GMT+7
Asiik udah berhasil gan cakep :D
By Anonymous, at Tuesday, June 4, 2013 at 5:39:00 AM GMT+7
Bisa dibuat pengecualian ga gan? soalnya saya pasang animasi loading pada form komentar, pas komentar di publish, jadi ada dua gitu efek loadingnya.
By Kang Ismet, at Tuesday, June 4, 2013 at 11:18:00 AM GMT+7
Work mas, hehehehe thank's \o/
By Unknown, at Sunday, June 9, 2013 at 8:58:00 PM GMT+7
gila ga kepikiran ya... bagus banget :-bd \o/
terima kasih mas Taufik Nurrohman
By Admine, at Thursday, June 13, 2013 at 6:51:00 PM GMT+7
Wah gan ane ga work di website , emang jquerynya pake versi yang mana?
By Wildan MR, at Sunday, June 16, 2013 at 8:40:00 PM GMT+7
Kalo di blog sih ada , tapi buat di halaman offline(pake jquery 1.8.3.min) . Tetep ga muncul gan
By Wildan MR, at Sunday, June 16, 2013 at 8:57:00 PM GMT+7
mas, disaya ga keluar animasi loadingnya... :(
By ricology, at Wednesday, June 19, 2013 at 5:57:00 PM GMT+7
thank for this post http://www.dte.web.id/2013/01/efek-animasi-loading-dengan-event.html
By Unknown, at Friday, July 19, 2013 at 9:18:00 AM GMT+7
mas, di blog saya kok effect ny ga bisa ya? kesalahan dmn? bisa tolong di cek T.T
sugrahaku.com
By Sugrahaku, at Monday, July 29, 2013 at 12:11:00 PM GMT+7
=p* makasih mas salam kenal, visit back blog baruku cms-teknologi.blogspot.com
By Unoz, at Wednesday, August 28, 2013 at 2:06:00 PM GMT+7
Berhasil gan,
ngomong-ngomong kalau mau ganti effect animasi gmn ya gan ? ~x(
By Unknown, at Saturday, September 7, 2013 at 8:46:00 AM GMT+7
This comment has been removed by the author.
By Unknown, at Saturday, September 7, 2013 at 4:09:00 PM GMT+7
bisa lihat komentar disini masbero http://www.dte.web.id/2013/01/efek-animasi-loading-dengan-event.html?showComment=1358518741306#c8005670485318104370
By Anonymous, at Saturday, September 7, 2013 at 7:34:00 PM GMT+7
mantap gan, kunjungi juga ya blog saya http://www.prediksibola888.blogspot.com/
By Unknown, at Saturday, September 14, 2013 at 3:28:00 PM GMT+7
mas mau nanya apakah dengan memakai ini akan mempercepat loading blog juga mas? seperti lazyload?
By Unknown, at Sunday, September 15, 2013 at 7:09:00 PM GMT+7
Tidak. Ini cuma efek.
By Taufik Nurrohman, at Wednesday, September 18, 2013 at 3:02:00 AM GMT+7
Saya cari" di google muter" akhirnya ketemu juga di sini kang... makasih kang
By Unknown, at Sunday, November 3, 2013 at 7:39:00 AM GMT+7
makasih mas ;)
By Dwi, at Thursday, December 12, 2013 at 10:59:00 AM GMT+7
mana ya cara yng sebelumnya??
By Unknown, at Sunday, April 6, 2014 at 11:57:00 AM GMT+7
Post a Comment
<< Home