Как я могу проверить DOM приложения Electron из скрипта? - PullRequest
5 голосов
/ 19 апреля 2019

У меня на компьютере запущено приложение Electron (Slack).Я хотел бы запустить JavaScript, который читает HTML DOM этого приложения.Это возможно?Если так, есть ли где-нибудь начало?

На мой взгляд, поскольку Electron использует Node.js для размещения HTML / JavaScript, я могу читать DOM.В то же время я мог видеть, что это запрещено, потому что это может быть угрозой безопасности.Я в порядке с угрозой безопасности, так как он работает на моей машине.Итак, я предполагаю, что будет приглашение UAC.Тем не менее, я просто пытаюсь понять, как читать DOM из внешнего скрипта, если это возможно.

Спасибо

Ответы [ 3 ]

4 голосов
/ 26 апреля 2019

Насколько я понимаю, вы хотите проверить или манипулировать некоторым HTML-кодом электронного приложения, которое установлено?

Вот как я понял, как получить доступ (в Mac OS), используя Slack в качестве примера:

  1. Перейдите в папку «Приложения» -> Slack -> щелкните правой кнопкой мыши «Показать содержимое пакета»
  2. Перейдите в «Содержимое-> Ресурсы -> app.asar.unpacked»
  3. Вы можете проверить, как, например, части приложения Slack.

Я попробовал это также с приложением GChat, и у них есть папка app.С технической точки зрения, вы можете добавить скрипт или что-то в index.html / index.jade (slack) и перехватить скрипты в main.js или index.js.

Например, я смог найти BrowserWindow Объект внутри приложения чата Google Chat и легко добавьте .webContents.openDevTools();.

И все же любое решение включает ручную работу.

Например, в main.js из GChat я украсил кодЯ искал электронный метод buildFromTemplate и нашел специальную функцию, где создается меню View.Я просто добавил следующее к этому

 {
          role: "toggledevtools",
          label: "Toogle Dev Tools"
        }

И в конце я смог легко переключить devtools (видно на скриншоте)

enter image description here

0 голосов
/ 26 апреля 2019

Вы можете добавить свой скрипт на страницу (до его загрузки) и использовать его для взаимодействия с любой страницей, которую вы открываете в электронном виде.Самый простой способ сделать это - использовать preload параметр нового окна.

Имейте в виду, что вы даже можете установить соединение со своим скриптом nodejs, так что есть действительно хороший способ общения с открытыми страницами и вашим собственнымскрипт в узле / электроне.

Подробнее здесь: https://electronjs.org/docs/api/browser-window

preload String (необязательно) - указывает скрипт, который будет загружен до запуска других скриптов встраница.Этот скрипт всегда будет иметь доступ к API узлов независимо от того, включена ли интеграция узлов.Значение должно быть абсолютным путем к файлу скрипта.Когда интеграция узлов отключена, сценарий предварительной загрузки может повторно ввести глобальные символы Node обратно в глобальную область.Смотрите пример здесь.

0 голосов
/ 25 апреля 2019

Если вы думаете о доступе к DOM через консоль (средства разработки), как в браузере, то это то, что вы не можете сделать. Поскольку инструменты разработки доступны только в среде разработки, после создания вы не сможете получить к ним доступ.

Таким образом, для запуска скрипта может потребоваться, чтобы электронное приложение включило скрипт в исходный код:

<script src="your-script.js"></script>

Так что, если они включили ваш скрипт в свое приложение, вы можете изменить его содержимое, чтобы добиться того, что вы ищете.

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