Saya sedang melakukan aplikasi kuis online di php. Saya ingin membatasi pengguna agar tidak kembali dalam ujian. Saya telah mencoba skrip berikut tetapi ini menghentikan timer saya. Apa yang harus saya lakukan?
Saya telah memasukkan kode sumber. Timer disimpan di cdtimer.js
<script type="text/javascript">
window.history.forward();
function noBack()
{
window.history.forward();
}
</script>
<body onLoad="noBack();" onpageshow="if (event.persisted) noBack();" onUnload="">
Saya memiliki penghitung waktu ujian yang membutuhkan waktu untuk ujian dari nilai mysql . Timer mulai sesuai tetapi berhenti ketika saya memasukkan kode untuk menonaktifkan tombol kembali. Apa masalah saya
javascript
browser
Sawant Akshay
sumber
sumber
Jawaban:
Ada banyak alasan mengapa menonaktifkan tombol kembali tidak akan berfungsi. Taruhan terbaik Anda adalah untuk memperingatkan pengguna:
Halaman ini mencantumkan sejumlah cara yang dapat Anda coba untuk menonaktifkan tombol kembali, tetapi tidak ada yang dijamin:
http://www.irt.org/script/311.htm
sumber
Ini umumnya merupakan ide yang buruk menimpa perilaku default browser web. Skrip sisi klien tidak memiliki hak istimewa yang memadai untuk melakukan ini karena alasan keamanan.
Ada beberapa pertanyaan serupa yang diajukan juga,
Bagaimana saya bisa mencegah tombol backspace dari menavigasi kembali?
Bagaimana mencegah tindakan back history default browser untuk tombol backspace dengan JavaScript?
Anda tidak dapat benar - benar menonaktifkan tombol kembali browser. Namun Anda dapat melakukan sihir menggunakan logika Anda untuk mencegah pengguna menavigasi kembali yang akan membuat kesan seperti itu dinonaktifkan. Begini caranya, lihat cuplikan berikut.
Ini murni JavaScript sehingga akan berfungsi di sebagian besar browser. Ini juga akan menonaktifkan tombol backspace tetapi kunci akan bekerja secara normal di dalam
input
bidang dantextarea
.Pengaturan yang disarankan:
Tempatkan cuplikan ini di skrip terpisah dan sertakan di halaman tempat Anda menginginkan perilaku ini. Dalam pengaturan saat ini akan menjalankan
onload
acara DOM yang merupakan titik masuk yang ideal untuk kode ini.DEMO yang berhasil!
Diuji dan diverifikasi di browser berikut,
sumber
location.hash
pada awalnya sehingga membuat saya melakukannya seperti ini. Mungkin ada lebih banyak perbaikan untuk ini tetapi 50 ms sekali saja tidak menghabiskan banyak biaya jadi saya meninggalkannya di sana.Saya menemukan ini, membutuhkan solusi yang bekerja dengan benar dan "baik" pada berbagai browser, termasuk Mobile Safari (iOS9 pada saat posting). Tidak ada solusi yang benar. Saya menawarkan yang berikut (diuji pada IE11, FireFox, Chrome & Safari):
Perhatikan yang berikut ini:
history.forward()
(solusi lama saya) tidak berfungsi di Mobile Safari --- tampaknya tidak melakukan apa-apa (yaitu pengguna masih dapat kembali).history.pushState()
tidak bekerja pada mereka semua.history.pushState()
adalah url . Solusi yang lulus string seperti'no-back-button'
atau'pagename'
tampaknya berfungsi OK, sampai Anda kemudian mencoba Refresh / Muat ulang halaman, di mana titik "Halaman tidak ditemukan" kesalahan dihasilkan ketika browser mencoba untuk menemukan halaman dengan itu sebagai Url-nya. (Peramban juga cenderung menyertakan string itu di bilah alamat saat berada di laman, yang jelek.)location.href
Harus digunakan untuk Url.history.pushState()
adalah judul . Melihat-lihat web kebanyakan tempat mengatakan itu "tidak digunakan", dan semua solusi di sini berlakunull
untuk itu. Namun, setidaknya di Mobile Safari, yang menempatkan Url halaman ke dalam dropdown riwayat yang dapat diakses pengguna. Tetapi ketika ia menambahkan entri untuk kunjungan halaman secara normal, ia memasukkan judulnya , yang lebih disukai. Jadi lulusdocument.title
untuk itu menghasilkan perilaku yang sama.sumber
sumber
window.history.back()
fungsinya. Kami ingin mencegah pengguna mengklik tombol kembali browser, tetapi dalam beberapa kasus kami menyediakan tombol kembali kami sendiri di halaman. Apakah ada cara untuk membuatnya bekerja?Kode ini akan menonaktifkan tombol kembali untuk browser modern yang mendukung API Sejarah HTML5. Dalam keadaan normal, menekan tombol kembali mundur satu langkah, ke halaman sebelumnya. Jika Anda menggunakan history.pushState (), Anda mulai menambahkan sub-langkah tambahan ke halaman saat ini. Cara kerjanya adalah, jika Anda menggunakan history.pushState () tiga kali, kemudian mulai menekan tombol kembali, tiga kali pertama itu akan menavigasi kembali dalam sub-langkah ini, dan kemudian keempat kalinya akan kembali ke halaman sebelumnya.
Jika Anda menggabungkan perilaku ini dengan pendengar acara pada
popstate
acara tersebut, Anda pada dasarnya dapat mengatur loop tak terbatas dari sub-kondisi. Jadi, Anda memuat halaman, menekan negara bagian, lalu tekan tombol kembali, yang muncul negara bagian dan juga mendorong yang lain, jadi jika Anda menekan tombol kembali lagi tidak akan pernah kehabisan negara bagian untuk menekan . Jika Anda merasa perlu untuk menonaktifkan tombol kembali, ini akan membawa Anda ke sana.sumber
no-back-button
... (Browser juga kemungkinan akan ditampilkanno-back-button
di alamat bar juga, yang tampaknya jelek.) Agar adil, ini bukan satu-satunya solusi di sini yang menderita ini. Argumen ke-3history.pushState()
adalah url , dan harus merupakan url dari halaman Anda saat ini: gunakanlocation.href
saja.Untuk acara Batasi kembali Browser
sumber
sumber
Ini adalah cara saya dapat mencapainya. Anehnya mengubah jendela. Lokasi tidak bekerja dengan baik di chrome dan safari. Terjadi bahwa location.hash tidak membuat entri dalam riwayat untuk chrome dan safari. Jadi, Anda harus menggunakan pushstate. Ini berfungsi untuk saya di semua browser.
sumber
$(document).ready(function () { .... });
sumber
event.persisted
?Artikel di jordanhollinger.com ini adalah pilihan terbaik yang saya rasakan. Mirip dengan jawaban Razor tapi sedikit lebih jelas. Kode di bawah ini; kredit penuh untuk Jordan Hollinger:
Halaman sebelumnya:
Halaman dari JavaScript yang tidak bisa dikembalikan:
sumber
Javascript ini tidak memungkinkan pengguna untuk kembali (berfungsi di Chrome, FF, IE, Edge)
sumber
Cobalah dengan mudah:
sumber
Kode ini diuji dengan browser Chrome dan Firefox terbaru.
sumber
Sangat sederhana dan fungsi bersih untuk mematahkan panah kembali tanpa mengganggu halaman sesudahnya.
Manfaat:
onbeforeunload
setInterval
sehingga tidak merusak browser yang lambat dan selalu berfungsi.unbeforeunload
yang mengganggu pengguna dengan dialog modal.Catatan: beberapa solusi lain digunakan
onbeforeunload
. Tolong jangan gunakanonbeforeunload
untuk tujuan ini, yang muncul dialog setiap kali pengguna mencoba untuk menutup jendela, tekan backarrow, dll. Moda sukaonbeforeunload
biasanya hanya sesuai dalam keadaan langka, seperti ketika mereka benar-benar telah membuat perubahan di layar dan berlindung ' t menyelamatkan mereka, bukan untuk tujuan ini.Bagaimana itu bekerja
Itu dia. Tidak ada lagi bermain-main, tidak ada pemantauan acara latar belakang, tidak ada yang lain.
Gunakan Dalam Satu Detik
Untuk menggunakan, tambahkan saja ini di mana saja di halaman Anda atau di JS Anda:
sumber
Hal ini tampaknya berhasil bagi kami dalam menonaktifkan tombol kembali pada browser, serta tombol backspace membawa Anda kembali.
sumber
sumber
Anda tidak bisa dan tidak seharusnya melakukan ini. Namun, tapi ini mungkin bisa membantu
Bekerja di chrome dan firefox saya
sumber
Coba ini untuk mencegah tombol backspace di IE yang secara default bertindak sebagai "Kembali":
sumber
Saya percaya solusi sempurna namun sebenarnya cukup mudah, yang saya gunakan selama bertahun-tahun sekarang.
Ini pada dasarnya menetapkan acara "onbeforeunload" jendela bersama dengan acara 'mouseenter' / 'mouseleave' dokumen yang sedang berlangsung sehingga peringatan hanya terpicu ketika klik berada di luar lingkup dokumen (yang kemudian bisa menjadi tombol kembali atau maju dari browser)
sumber
Dalam peramban modern ini sepertinya berfungsi:
sumber
Tidak ada jawaban yang paling banyak dipilih untuk saya di Chrome 79 . Sepertinya Chrome mengubah perilakunya sehubungan dengan tombol Kembali setelah Versi 75, lihat di sini:
https://support.google.com/chrome/thread/8721521?hl=id
Namun, di utas Google itu, jawaban yang diberikan oleh Azrulmukmin Azmi pada akhirnya berhasil. Ini solusinya.
Saya tidak sepenuhnya mengerti apa yang ia tulis, tetapi tampaknya tambahan
history.back() / history.forward()
sekarang diperlukan untuk memblokir Kembali di Chrome 75+.sumber
Saya membuat satu halaman HTML (index.html). Saya juga membuat satu (mekanisme.js) di dalam folder / direktori (skrip). Lalu, saya meletakkan semua konten saya di dalam (index.html) menggunakan formulir, tabel, rentang, dan tag div sesuai kebutuhan. Sekarang, inilah trik yang akan membuat back / forward tidak melakukan apa pun!
Pertama, fakta bahwa Anda hanya memiliki satu halaman! Kedua, penggunaan JavaScript dengan tag span / div untuk menyembunyikan dan menampilkan konten pada halaman yang sama saat dibutuhkan melalui tautan biasa!
Di dalam 'index.html':
Di dalam 'mechan.js':
Ini terlihat berbulu, tetapi perhatikan nama fungsi dan panggilan, HTML yang disematkan, dan panggilan id tag span. Ini untuk menunjukkan bagaimana Anda dapat menyuntikkan HTML berbeda ke tag rentang yang sama di halaman yang sama! Bagaimana Back / Forward dapat memengaruhi desain ini? Tidak bisa, karena Anda menyembunyikan benda dan mengganti yang lain di halaman yang sama!
Bagaimana cara menyembunyikan dan menampilkan? Ini dia: Fungsi di dalam 'mechan.js' sesuai kebutuhan, gunakan:
Di dalam fungsi panggilan 'index.html' melalui tautan:
dan
Saya harap saya tidak membuat Anda sakit kepala. Maaf jika saya lakukan :-)
sumber
Dalam kasus saya ini adalah pesanan belanja. Jadi yang saya lakukan adalah menonaktifkan tombol. Ketika pengguna mengklik kembali, tombol itu tetap dinonaktifkan. Ketika mereka mengklik kembali sekali lagi, dan kemudian mengklik tombol halaman untuk maju. Saya tahu pesanan mereka diajukan dan dilewati ke halaman lain.
Dalam kasus ketika halaman benar-benar disegarkan yang akan membuat tombol (secara teoritis), tersedia; Saya kemudian dapat bereaksi dalam pemuatan halaman bahwa pesanan sudah dikirim dan mengarahkan juga.
sumber
sumber
javascript:
Anda buat mendefinisikan label JavaScript bernama "javascript". Saya sangat meragukan Anda bermaksud demikian; Saya curiga Anda bercampurhref=javascript:...
dengan<script>
blok JavaScript . 2.language="JavaScript"
berhenti menjadi<script>
atribut yang valid di HTML5. 3. 2 poin di atas tidak terlalu penting; yang penting adalah yanghistory.forward(1)
tidak berfungsi di Mobile Safari (setidaknya). Gunakan salah satuhistory.pushState()
jawaban saja.Anda cukup meletakkan skrip kecil lalu periksa. Itu tidak akan memungkinkan Anda untuk mengunjungi halaman sebelumnya. Ini dilakukan dalam javascript.
Fungsi window.onunload menyala ketika Anda mencoba untuk mengunjungi kembali atau halaman sebelumnya melalui browser.
Semoga ini membantu.
sumber
Saya punya masalah dengan React.JS. (komponen kelas)
Dan selesaikan dengan mudah
Saya sudah menggunakan
HashRouter
darireact-router-dom
.sumber
Cukup tetapkan
location.hash="Something"
, Pada menekan tombol kembali hash akan dihapus dari url tetapi halaman tidak akan kembali, Metode ini baik untuk mencegah kembali secara tidak sengaja, tetapi untuk tujuan keamanan Anda harus merancang backend Anda untuk mencegah penjawaban ulangsumber
sumber