Adakah yang punya pengalaman dengan mengesampingkan alert()
fungsi dalam JavaScript?
- Browser mana yang mendukung ini?
- Versi browser apa yang mendukung ini?
- Apa bahaya dalam mengesampingkan fungsi?
javascript
overriding
cllpse
sumber
sumber
_alert
sebagai semacam expo temp pada contoh pertama.Jawaban:
Ini pasti "didukung". Ini adalah halaman web Anda, Anda melakukan apa pun yang Anda inginkan dengannya.
Saya sudah melakukan ini untuk melacak acara analitik tanpa memodifikasi perpustakaan tetapi dengan menyelinap masuk ke acara.
Gunakan pola proxy:
Anda juga dapat mem-bypass panggilan ke fungsi semula jika Anda mau (proksi)
Info lebih lanjut di sini: Jenis JQuery #Proxy Pattern
sumber
apply()
tidak tersedia diwindow.alert
dalam Internet Explorer 8.apply
adalah metodeFunction
objek. Jadi mereka harus secara eksplisit membatasi itualert
?!Meskipun sebagian besar browser mendukungnya, berhati-hatilah dengan apa yang Anda lakukan dengannya.
Karena kotak peringatan default memblokir utas eksekusi, beberapa pustaka yang mengandalkan perilaku ini mungkin tidak berfungsi lagi (paling-paling).
Anda harus menjadi warga negara yang baik dan menghindari menyentuh API asli. Jika ya, Anda bisa memecahnya, saat menggunakan kode pihak ke-3.
Namun, jika Anda ingin mendefinisikan kembali perilaku waspada dalam konteks tertentu, Anda bisa melampirkannya dengan fungsi anonim, seperti ini:
sumber
Tidak ada bahaya dalam fungsi peringatan Overring. Setiap browser mendukungnya.
sebagai contoh:
sumber
alert("Reloading")
kemudian memuat ulang halaman web. Teks peringatan mungkin tidak pernah terlihat oleh pengguna.Saya pikir setiap implementasi Javascript akan mendukung ini, dan tidak ada bahaya yang terlibat dengannya. Ini biasanya dilakukan untuk mengganti kotak peringatan bergaya OS ke sesuatu yang lebih elegan dengan HTML / CSS. Melakukannya dengan cara ini berarti Anda tidak perlu mengubah kode yang ada! Fakta bahwa itu memungkinkan membuat Javascript luar biasa.
sumber
Seperti yang dikatakan dalam banyak jawaban lain, Anda bisa mengganti fungsi dengan
atau
Namun, ini tidak serta-merta mengesampingkan fungsi prototipe
Window
konstruktor (perhatikan modalW
), sehingga peretas masih dapat mengetik:karena itu, Anda juga perlu mengganti fungsi itu dengan:
atau
sumber
Ladislav.
Untuk IE8 Anda dapat mendefinisikan ulang peringatan () seperti ini
dan panggil sebagai
sumber
Pengalaman saya dengan fungsi peringatan utama () adalah bahwa kami pernah menggunakannya untuk "meretas" versi percobaan perpustakaan JavaScript yang menampilkan "Silakan daftar!" cerewet layar melalui waktu peringatan ke waktu.
Kami baru saja mendefinisikan fungsi alert () kami dan voila.
Itu hanya untuk tujuan pengujian, kami membeli versi lengkap nanti, jadi tidak ada yang tidak bermoral terjadi di sini ;-)
sumber
Semua implementasi JavaScript di browser modern mendukung penggantian.
Bahayanya cukup sederhana, bahwa Anda akan membuat anggota tim lain benar-benar gila dengan mengesampingkan fungsi yang umum dikenal seperti waspada ().
Jadi, kecuali jika Anda mengesampingkan fungsi sebagai alat untuk mungkin men-debug atau meretas kode yang ada dalam beberapa cara, saya tidak melihat alasan untuk melakukannya. Cukup buat fungsi baru.
sumber
Itu pasti berfungsi di firefox dan ie8. Saya tidak dapat melihat bahwa akan ada peramban yang tidak berfungsi. Ini cukup mendasar tentang cara kerja javascript, meskipun orang tidak sering melihatnya menggunakan fungsi asli seperti itu =)
sumber
Peretasan cepat yang saya lakukan untuk menemukan dari mana peringatan itu berasal, adalah pergi ke konsol dan kemudian masukkan ini
sumber
Ketika datang ke fungsi browser js
window.alert
adalah unggulan dan paling terkenal, orang yang tidak tahu js tahualert()
- yakin itu didukung di semua browser yang digunakan hari ini dan potongan kode Anda juga. Namun, saya tidak akan menimpa (nah ini lebih seperti refactoring daripada menimpa dalam arti OOP)alert()
untuk kasus penggunaan tertentu karena Anda karena ketika Anda benar-benar perlu menggunakanalert()
tanpa template, dan Anda mungkin akan melakukannya, maka Anda akan perlu fungsi non-waspada lain untuk melakukannya.sumber
Saya telah menghadapi persyaratan untuk menampilkan pesan default beserta pesan peringatan yang sebenarnya. Beginilah cara saya berhasil melakukannya.
Saya sudah mengujinya di chrome. Saya tidak yakin apakah ini praktik yang baik, tetapi melayani tujuannya.
sumber