Electron: Как предотвратить навигацию в веб-просмотре при нажатии на URL-ссылку

Созданный на 22 янв. 2016  ·  3Комментарии  ·  Источник: electron/electron

Привет,
Я просмотрел следующее предложение в документации по событию 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 перестал переходить на новую страницу.

Самый полезный комментарий

это работает для меня, чтобы предотвратить навигацию, когда пользователь нажимает на ссылки и уведомляет приложение о запрошенном 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)

ссылка: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

Все 3 Комментарий

Дубликат № 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)

ссылка: https://stackoverflow.com/questions/6157486/jquery-trap-all-click-events-before-they-happen/6157660#6157660

Была ли эта страница полезной?
0 / 5 - 0 рейтинги