Bagaimana Mengesan Klik Butang Belakang dengan Tepat dalam Pelayar Web Sambil Mengelakkan Pencetus Palsu?

Susan Sarandon
Lepaskan: 2024-10-22 14:43:54
asal
682 orang telah melayarinya

How to Accurately Detect Back Button Clicks in Web Browsers While Avoiding False Triggers?

Mengesan Klik Butang Belakang dalam Pelayar Web: Menangani Pencetus Palsu

Apabila cuba mengesan klik butang belakang pengguna, pembangun sering bergantung pada window.onbeforeunload acara. Walau bagaimanapun, pendekatan ini mempunyai had: ia juga mencetuskan apabila tindakan lain dilakukan, seperti menyegarkan halaman.

Penyelesaian yang lebih komprehensif adalah untuk membezakan antara klik butang belakang dan acara lain:

Menggunakan API Sejarah:

Pendekatan ini menyasarkan pelayar yang menyokong API Sejarah (fungsi history.pushState):

<code class="js">window.onload = function () {
  if (typeof history.pushState === "function") {
    history.pushState("jibberish", null, null);
    window.onpopstate = function () {
      history.pushState('newjibberish', null, null);
      // Handle back or forward button clicks here (excluding refresh)
    };
  } else {
    ... // Handle non-History API browsers
  }
}</code>
Salin selepas log masuk

Menggunakan Perubahan Cincang:

Untuk pelayar tanpa sokongan History API, penyelesaian sandaran boleh dilaksanakan menggunakan perubahan cincang:

<code class="js">window.onload = function () {
  ... // Similar to History API code
} else {
  var ignoreHashChange = true;
  window.onhashchange = function () {
    if (!ignoreHashChange) {
      ignoreHashChange = true;
      window.location.hash = Math.random();
      // Detect back button click here
      // Note: Messes with hash symbol at the end of URL
    } else {
      ignoreHashChange = false;
    }
  };
}</code>
Salin selepas log masuk

Mengendalikan Isu Muat Semula:

Semasa penyelesaian di atas menangani pengesanan butang belakang, mereka tidak mengendalikan penyegaran halaman. Untuk ini, window.onbeforeunload masih boleh digunakan:

<code class="js">window.onbeforeunload = function (e) {
  if (e.preventDefault) {
    e.preventDefault();
    e.returnValue = '';
  }
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Mengesan Klik Butang Belakang dengan Tepat dalam Pelayar Web Sambil Mengelakkan Pencetus Palsu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!