gpt4 book ai didi

javascript - Webview窃取点击、touchstart、touchend事件

转载 作者:行者123 更新时间:2023-12-05 07:46:12 26 4
gpt4 key购买 nike

我正在将 Chrome 应用程序转换为 Electron 。该应用程序本身以全屏信息亭模式运行提供的 URL(带有一些其他配置选项)。我希望能够在 webview 的父元素上检测渲染器进程中的点击,但是 webview“窃取”点击、touchstarts 和 touchends,同时“共享”mousedown 和 mouseup。我创建了一个非常基本的应用程序,其网页包含指向空白网页的 webview。我添加了 click、mousedown 和 mouseup 监听器,以记录 webview 和父进程中的代码。如果我在 webview 之外单击,父级的开发控制台输出“mousedown mouseup click”,但如果我单击 webview,父级的开发控制台输出“mousedown mouseup”,而 webview 的开发控制台输出“mousedown mouseup click”

此应用主要用于触摸屏,因此 mousedown/mouseup 不是解决方案。我需要 click、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>

网页浏览流程:

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

最佳答案

当然。 webview是iframe,iframe不会冒泡这些事件

关于javascript - Webview窃取点击、touchstart、touchend事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com