Привет,
Я просмотрел следующее предложение в документации по событию will-navigate (https://github.com/atom/electron/blob/master/docs/api/web-view-tag.md).
Вызов event.preventDefault() НЕ имеет никакого эффекта.
Итак, как мы можем предотвратить переход веб-просмотра на другую страницу? Я намерен запустить браузер по умолчанию, когда пользователь нажимает на URL-ссылку в веб-просмотре.
Вот мой код в процессе рендеринга.
webview.addEventListener('will-navigate', function(e) {
e.preventDefault();
require('electron').shell.openExternal(e.url);
});
С помощью этого кода, когда я нажимаю ссылку URL в веб-просмотре, веб-просмотр переходит на новую страницу, и браузер по умолчанию также открывается, показывая новую страницу. Я хочу, чтобы webview перестал переходить на новую страницу.
Дубликат № 1378.
Я не вижу опубликованного решения?
это работает для меня, чтобы предотвратить навигацию, когда пользователь нажимает на ссылки и уведомляет приложение о запрошенном URL-адресе. Использование предварительной загрузки и внедрение этого:
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);
});
обратите внимание на 3-й параметр в document.addEventListener('click', fn, true)
Самый полезный комментарий
это работает для меня, чтобы предотвратить навигацию, когда пользователь нажимает на ссылки и уведомляет приложение о запрошенном URL-адресе. Использование предварительной загрузки и внедрение этого:
обратите внимание на 3-й параметр в
document.addEventListener('click', fn, true)
ссылка: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660