Как создать адресную строку в приложении на Electron?

Как добавить в верхнюю панель (alt меню) вашего Electron приложения адресную строку, которая будет отображать текущий URL сайта и позволит пользователю изменять адрес, включая функции копирования и вставки?
  • 28 сентября 2024 г. 13:53
Ответы на вопрос 2
Создание адресной строки в приложении на Electron может быть выполнено с использованием HTML, CSS и JavaScript. Мы можем использовать стандартные элементы интерфейса (такие как `<input>` для адресной строки) и API Electron для управления веб-контентом. Вот базовый пример того, как это можно реализовать:

### 1. Создание основного файла `main.js`

Этот файл будет основным процессом вашего приложения:

```javascript
const { app, BrowserWindow, Menu } = require('electron');

function createWindow() {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true,
            contextIsolation: false, // Если используете preload на более безопасной основе
        }
    });

    win.loadURL('https://example.com');
    
    const menu = Menu.buildFromTemplate([
        {
            label: 'File',
            submenu: [
                { role: 'quit' }
            ]
        }
    ]);
    
    Menu.setApplicationMenu(menu);
}

app.whenReady().then(createWindow);
```

### 2. Создание пользовательского интерфейса в `index.html`

Создайте файл `index.html`, в котором будет располагаться адресная строка:

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Electron App</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            height: 100vh;
            margin: 0;
        }

        .address-bar {
            padding: 10px;
            background-color: #f1f1f1;
            display: flex;
            align-items: center;
        }
        
        .address-bar input {
            width: 100%;
            padding: 5px;
        }
    </style>
</head>
<body>
    <div class="address-bar">
        <input type="text" id="url-input" placeholder="Введите URL" />
    </div>
    <webview id="webview" style="flex: 1;" src="https://example.com"></webview>

    <script>
        const webview = document.getElementById('webview');
        const urlInput = document.getElementById('url-input');

        webview.addEventListener('did-navigate', () => {
            urlInput.value = webview.getURL();
        });

        urlInput.addEventListener('keypress', (event) => {
            if (event.key === 'Enter') {
                webview.loadURL(urlInput.value);
            }
        });
    </script>
</body>
</html>
```

### 3. Описание работы

- **Основной процесс (`main.js`)**: Создается окно, загружается исходный URL и устанавливается верхнее меню.
- **HTML файл (`index.html`)**: Включает адресную строку и элемент `webview` для отображения веб-контента.
- **JavaScript на странице**:
  - Слушает события `did-navigate`, чтобы обновить адресную строку при переходах по URL.
  - При нажатии клавиши `Enter` в адресной строке, веб-просмотр загружает указанный URL.

### 4. Усовершенствования

Вы также можете использовать JavaScript для добавления функций копирования/вставки, например, используя Clipboard API из Electron или стандартные методы браузера:

```javascript
document.addEventListener('paste', async () => {
    const clipboardText = await navigator.clipboard.readText();
    urlInput.value = clipboardText;
});
```

### Заключение

С помощью этого кода вы можете создать простую адресную строку в приложении Electron, которая будет отображать текущий URL и позволять пользователю изменять его. Вы можете дополнительно улучшить функциональность, добавив кнопки для копирования и вставки, а также различные проверки на вводимые URL.
Точно так же как и в любом веб-приложении - с помощью HTML, CSS и JS.
Похожие вопросы