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.
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)
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:
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