Electron: Bagaimana mencegah navigasi pada tampilan web ketika tautan URL diklik

Dibuat pada 22 Jan 2016  ·  3Komentar  ·  Sumber: electron/electron

Hai,
Saya melihat kalimat berikut dalam dokumentasi acara will-navigate (https://github.com/atom/electron/blob/master/docs/api/web-view-tag.md).

Memanggil event.preventDefault() TIDAK memiliki efek apa pun.

Jadi bagaimana kita bisa mencegah tampilan web menavigasi ke halaman lain? Saya bermaksud meluncurkan browser default ketika pengguna mengklik tautan URL di tampilan web.
Ini kode saya pada proses penyaji.

 webview.addEventListener('will-navigate', function(e) {
        e.preventDefault();
        require('electron').shell.openExternal(e.url);
 });

Dengan kode ini, ketika saya mengklik tautan URL di tampilan web, tampilan web akan menavigasi ke halaman baru dan browser default juga terbuka menampilkan halaman baru. Saya ingin tampilan web berhenti menavigasi ke halaman baru.

Komentar yang paling membantu

ini berfungsi untuk saya untuk mencegah navigasi melalui pengguna mengklik tautan dan memberi tahu aplikasi tentang url yang diminta. Menggunakan preload dan menyuntikkan ini:

document.addEventListener('DOMContentLoaded', function () {
  document.addEventListener('click', function (e) {
    e.preventDefault();
    e.stopPropagation();
    setTimeout(function () {
      var path = e.target.href;
      ipcRenderer.sendToHost('element-clicked', path);
    }, 100);
    return false;
  }, true);
});

harap perhatikan param ke-3 di document.addEventListener('click', fn, true)

ref: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

Semua 3 komentar

Duplikat #1378.

Saya tidak melihat solusi yang diposting?

ini berfungsi untuk saya untuk mencegah navigasi melalui pengguna mengklik tautan dan memberi tahu aplikasi tentang url yang diminta. Menggunakan preload dan menyuntikkan ini:

document.addEventListener('DOMContentLoaded', function () {
  document.addEventListener('click', function (e) {
    e.preventDefault();
    e.stopPropagation();
    setTimeout(function () {
      var path = e.target.href;
      ipcRenderer.sendToHost('element-clicked', path);
    }, 100);
    return false;
  }, true);
});

harap perhatikan param ke-3 di document.addEventListener('click', fn, true)

ref: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

Apakah halaman ini membantu?
0 / 5 - 0 peringkat