Oi,
Examinei a seguinte frase na documentação do evento will-navigate (https://github.com/atom/electron/blob/master/docs/api/web-view-tag.md).
Chamar event.preventDefault() NÃO tem nenhum efeito.
Então, como podemos impedir que o webview navegue para outra página? Eu pretendo iniciar o navegador padrão quando o usuário clicar em um link de URL no webview.
Aqui está o meu código no processo de renderização.
webview.addEventListener('will-navigate', function(e) {
e.preventDefault();
require('electron').shell.openExternal(e.url);
});
Com este código, quando clico no link da URL no webview, o webview navegará para a nova página e o navegador padrão também será aberto mostrando a nova página. Quero que o webview pare de navegar para a nova página.
Duplicata de #1378.
Não vejo uma solução postada?
isso funciona para mim para impedir a navegação por meio do usuário clicar em links e notificar o aplicativo sobre o URL solicitado. Usando pré-carregamento e injetando isso:
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);
});
observe o 3º parâmetro no document.addEventListener('click', fn, true)
Comentários muito úteis
isso funciona para mim para impedir a navegação por meio do usuário clicar em links e notificar o aplicativo sobre o URL solicitado. Usando pré-carregamento e injetando isso:
observe o 3º parâmetro no
document.addEventListener('click', fn, true)
ref: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660