在电子视频中获取webview中的单击元素

时间:2018-06-10 13:25:27

标签: javascript electron

我正在构建一个嵌入了webview的电子应用程序。就像这样。

的index.html

var gallery = document.querySelectorAll('.modalImg');
var modal = document.querySelectorAll('#myModal');
var modalView = document.querySelectorAll('#img01');
var caption = document.querySelectorAll('#caption');

modalUp();

function modalUp(){
    for(var i = 0; i < gallery.length; i++) {

        gallery[i].addEventListener("click", function(){
            modal.style.display = "block";
            modalView.src = this.src;
            caption.innerHTML = this.alt;
        });
    };
};


<body>
    <div class="gallery">
        <img class="modalImg" src="1.jpg" alt="Fish">
        <img class="modalImg" src="2.jpg" alt="Vroom">
    </div>
    <!-- Empty Modal Box -->
    <div class="modal" id="myModal">
        <img class="modalView" id="img01">
        <div id="caption"></p>
    </div>
</body>
<script src="modaltest.js" type="text/javascript" charset="utf-8" async defer></script>
</html>

我想获取用户右键单击的元素的tagName,如果它是udev 7.2G 0 7.2G 0% /dev tmpfs 1.5G 41M 1.4G 3% /run /dev/vda1 99G 4.6G 89G 5% / tmpfs 7.2G 4.0K 7.2G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.2G 0 7.2G 0% /sys/fs/cgroup /dev/vdb1 443G 71M 421G 1% /home tmpfs 1.5G 0 1.5G 0% /run/user/1001 ,我想对元素执行某些操作。这是我试过的。

renderer.js

<!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>

它不起作用,因为img始终是嵌入式document.getElementById("webview").addEventListener("contextmenu", event => { if (event.target.tagName === "img") { const src = event.target.src; // do something with src } }); 本身。无论我点击什么。如何使它工作?

1 个答案:

答案 0 :(得分:1)

你不能。 Electron中的WebView是一种特殊的类型,它产生一个单独的,孤立的进程来托管父母以外的内容,最终大部分内部元素都无法通过普通的html界面访问。相反,您必须在特定所需行为的过程之间手动设置一些IPC,例如webview的预加载脚本设置ipc监听器,以及父将一些ipc发送到webview,反之亦然。