Webview窃取click,touchstart,touchend事件

时间:2016-12-09 19:52:02

标签: javascript webview electron

我将Chrome应用转换为电子版。应用程序本身以全屏信息亭模式运行提供的URL(带有一些其他配置选项)。我希望能够在webview的父元素上检测渲染器进程中的点击次数,但是webview"窃取"点击,触摸开关和触摸,同时"分享" mousedown和mouseup。 我创建了一个非常基本的应用程序,其中的网页包含指向空白网页的webview。我添加了click,mousedown和mouseup监听器来记录webview中的代码和父进程内的代码。如果我在网页浏览之外点击,则父级的开发控制台输出" mousedown mouseup click"但是,如果我点击webview,父母的开发控制台会输出" mousedown mouseup"和webview的开发控制台输出" mousedown mouseup click"

此应用程序主要用于触摸屏,因此mousedown / mouseup不是解决方案。我需要点击,touchstart和touchend才能工作。为什么mousedown和mouseup会从webview中冒出来,而touchstart,touchend和click却没有?

意图是允许在webview中加载交互式页面,但具有主进程监视的一些手势快捷方式,例如重新加载webview的一系列点击。请参阅下面的代码。

**我感到愚蠢。当然它适用于Chromium浏览器,webview甚至不是那里的有效标签。请忽略我以前的编辑。

家长流程:

<!DOCTYPE html>
<html>
  <head>
    <script>
    setTimeout(function(){
        document.addEventListener('click', function(e) {
          console.log('click');
        })
        document.addEventListener('mousedown', function(e) {
          console.log('mousedown');
        })
        document.addEventListener('mouseup', function(e) {
          console.log('mouseup');
        })
        document.addEventListener('touchstart', function(e) {
          console.log('touchstart');
        });
        document.addEventListener('touchend', function(e) {
          console.log('touchend');
        });
        document.getElementById('webview').openDevTools();
      }, 1000);
    </script>
    <title>Electron Test</title>
  </head>
  <body>
    <div id="container">
      <webview id="webview" src="http://localhost/blank.html" style="width:100%;height:100%;"/>
    </div>
  </body>
</html>

Webview流程:

<!DOCTYPE html>
<html>
<head>
  <script>
    document.addEventListener('click', function(e) {
      console.log('webview click');
    });
    document.addEventListener('mousedown', function(e) {
      console.log('webview mousedown');
    });
    document.addEventListener('mouseup', function(e) {
      console.log('webview mouseup');
    });
    document.addEventListener('touchstart', function(e) {
      console.log('webview touchstart');
    });
    document.addEventListener('touchend', function(e) {
      console.log('webview touchend');
    });
  </script>
  <title>Hello World!</title>
</head>
<body>
  Hello World!
</body>
</html>

0 个答案:

没有答案