Я создаю электронное приложение со встроенным веб-просмотром. Именно так.
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Hello World!</title>
</head>
<body>
<webview
id = "webview"
src = "https://www.google.com/search?q=search&tbm=isch"
/>
<script>
require('./renderer.js')
</script>
</body>
</html>
Я хотел бы получить tagName элемента, на котором пользователь щелкнул правой кнопкой мыши, и я хочу что-то сделать с элементом, если это img. Вот что я пробовал.
document.getElementById("webview").addEventListener("contextmenu", event => {
if (event.target.tagName === "img") {
const src = event.target.src;
// do something with src
}
});
Это не работает, потому что event.target всегда является встроенным webview. Независимо от того, что я нажимал. Как заставить работать?
@connexo Я пробовал, event.currrentTarget тоже всегда webview.
Почему бы не использовать сценарий предварительной загрузки для веб-просмотра? Это должно отлично сработать в вашем случае.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


ты не можешь. WebView в Electron - это особый вид, порождающий отдельный изолированный процесс для размещения содержимого, отличного от родительского, в результате чего большинство внутренних элементов недоступны через обычные интерфейсы html. Вместо этого вам нужно вручную настроить некоторый IPC между процессами для определенного желаемого поведения, например, сценарий предварительной загрузки webview устанавливает прослушиватель ipc, а родительский элемент отправляет некоторый ipc в веб-просмотр или наоборот.
Вы пробовали
event.currentTarget? Не уверен, поможет ли это. Веб-просмотры ведут себя как iframe? В этом случае выбранный элемент находится в DOM веб-представления, но не в DOM внешней страницы.