Невозможно получить доступ к некоторым методам DOM в процессе рендеринга Electron - PullRequest
0 голосов
/ 23 января 2019

Позвольте мне поставить этот вопрос перед моей текущей настройкой:

index.html

<!DOCTYPE html>
<html lang="en">
    <head>
    </head>
    <body>
        <h1></h1>
        <p>Note One</p>
    </body>
    <script>
        require('./renderer.js')
    </script>
</html>

main.js основной процесс

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

let mainWindow = null

app.on('ready', () => {
    mainWindow = new BrowserWindow()
    mainWindow.webContents.loadFile('index.html')
})

А ниже - рендерер, где я играю с некоторыми базовыми методами DOM. Некоторая работа и другие терпят неудачу:

renderer.js

document.querySelector('p').remove()
const h2 = document.createElement('h2')
h2.textContent = 'test'

Распределение renderer.js:

Первая строка работает как положено, первый элемент p возвращается и удаляется.

Вторая строка не вызывает видимых ошибок, но молча не может создать элемент h2 в DOM, и поэтому в строке 3 не добавляется текст.

Я не понимаю этого поведения, почему я не могу получить доступ ко всем API DOM в процессе визуализации?

1 Ответ

0 голосов
/ 23 января 2019

Строка document.querySelector('p').remove() работает, потому что querySelector возвращает один элемент <p>, который имеет метод .remove.

Вторая строка document.createElement('h2') создает новый элемент <h2>, ноочевидно, вы не добавляете его в DOM , поэтому GC удаляет его.Попробуйте:

const h2 = document.createElement('h2');
h2.textContent = 'Test createElement';
document.body.appendChild(h2);

Проверьте, работает ли это (подсказка: должно!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...