mg_abr
@mg_abr

Как фильтровать URL в Electron?

Приложение - простая открывашка URL-адреса, через webview.

Есть необходимость закрыть доступ к некоторым страницам (адресам). Чтобы в случае перехода на нежелательный адрес, Electron бы делал переадресацию на главную страницу.

Есть ли возможность в Electron сделать подобную фильтрацию?

index.html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>1</title>
</head>
<body>

    <webview id="foo" src="https://www.google.com" style="display:inline-flex; width:100%; height:100%"></webview>

    <script>
        onload = () => {
            const webview = document.querySelector('webview')
        }
    </script>

</body>
</html>

main.js
const {app, BrowserWindow} = require('electron')

let mainWindow

function createWindow () {
    mainWindow = new BrowserWindow({
        webPreferences: {
            webViewTag: true
        },
        width: 1024, 
        height: 576,
        //frame: false,
        //fullscreen: true,
    })

    mainWindow.loadFile('index.html')
    mainWindow.webContents.loadURL('https://www.google.com').then(() => {
        const currentURL = mainWindow.webContents.getURL()
        console.log(currentURL)
    })
    
    // mainWindow.webContents.openDevTools()

    mainWindow.on('closed', function () {
    mainWindow = null
    })
}

app.on('ready', createWindow)
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@imegaded
В моем случае была необходимость открывать все сторонние ссылки в браузере (не электроне). Доступ к url есть, делай любую обработку, какую душа пожелает =)

import open from 'open';
...
...
...
app.on('web-contents-created', (_event, contents) => {
  contents.on('new-window', (e, urlLink) => {
    e.preventDefault();
    open(urlLink);
  });
  contents.on('will-navigate', (e, urlLink) => {
    if (urlLink !== contents.getURL()) {
      e.preventDefault();
      open(urlLink);
    }
  });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект