やあ、
will-navigateイベント(https://github.com/atom/electron/blob/master/docs/api/web-view-tag.md)のドキュメントで次の文を調べました。
event.preventDefault()を呼び出しても効果はありません。
では、Webビューが他のページに移動しないようにするにはどうすればよいでしょうか。 ユーザーがwebviewのURLリンクをクリックすると、デフォルトのブラウザを起動するつもりです。
これがレンダラープロセスの私のコードです。
webview.addEventListener('will-navigate', function(e) {
e.preventDefault();
require('electron').shell.openExternal(e.url);
});
このコードでは、webviewのURLリンクをクリックすると、webviewが新しいページに移動し、デフォルトのブラウザも開いて新しいページが表示されます。 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);
});
document.addEventListener('click', fn, true)
の3番目のパラメータに注意してください
参照: https ://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660
最も参考になるコメント
これは、ユーザーがリンクをクリックしてナビゲーションを防止し、要求されたURLについてアプリに通知するために機能します。 プリロードの使用とこれの注入:
document.addEventListener('click', fn, true)
の3番目のパラメータに注意してください参照: https ://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660