Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana Mengesan Klik Butang Belakang dengan Tepat dalam Pelayar Web Sambil Mengelakkan Pencetus Palsu?

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

Susan Sarandon
Susan Sarandonasal
2024-10-22 14:43:54685semak imbas

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>

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>

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>

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!

Kenyataan:
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