Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome扩展上下文中触发时,Touch事件将丢失'touchs'属性_Javascript_Google Chrome Extension_Touch_Event Simulation - Fatal编程技术网

Javascript 在Chrome扩展上下文中触发时,Touch事件将丢失'touchs'属性

Javascript 在Chrome扩展上下文中触发时,Touch事件将丢失'touchs'属性,javascript,google-chrome-extension,touch,event-simulation,Javascript,Google Chrome Extension,Touch,Event Simulation,我试图从Chrome扩展中模拟触摸事件。我在设备模式下使用开发者工具来模拟触摸浏览器 当我在文档的上下文中运行模拟触摸事件的代码时(在开发人员工具下拉框中选择),它工作正常。但是,当我在任何扩展(例如AdBlock)的上下文中运行相同的代码时,触摸事件到达事件处理程序,而不使用触摸和更改触摸属性(它们是未定义的) 这是Chrome的缺陷还是我遗漏了什么 当我触摸红色区域时,我得到以下输出: 获得真实接触事件1 (1是指触摸的手指数) 当我模拟触摸时,我得到以下输出: 得到模拟触摸事件1 如果我将

我试图从Chrome扩展中模拟触摸事件。我在设备模式下使用开发者工具来模拟触摸浏览器

当我在文档的上下文中运行模拟触摸事件的代码时(在开发人员工具下拉框中选择
),它工作正常。但是,当我在任何扩展(例如AdBlock)的上下文中运行相同的代码时,触摸事件到达事件处理程序,而不使用
触摸
更改触摸
属性(它们是
未定义的

这是Chrome的缺陷还是我遗漏了什么

当我触摸红色区域时,我得到以下输出:

获得真实接触事件1

1
是指触摸的手指数)

当我模拟触摸时,我得到以下输出:

得到模拟触摸事件1

如果我将JavaScript复制到扩展上下文下的开发工具中

我得到以下输出:

获得真实接触事件空值

(真正的原因是我无法访问捕获的
simulated
变量,这与这个问题无关)

编辑:我已经向chromium项目提交了一份报告,以防这真的是一个bug

代码如下:
var计数=0;
函数日志(msg){
var out=document.getElementById('output');
out.innerHTML=++count+':'+msg+'
'+out.innerHTML; } 模拟var=假; 函数消息(){ 返回'Got'+(模拟的?'simulated':'real')+'touch event'; } 函数fire(){ 模拟=真实; var event=document.createEvent('event'); initEvent('touchstart',true,true); var元素=document.getElementById('x'); event.touch=createTouchList(createTouch(元素{ x:5, y:5 }, 42)); 元素。dispatchEvent(事件); } 火=火; 函数createTouch(元素、点、id){ if(document.createTouch) 返回document.createTouch(窗口、元素、id、point.x、point.y、point.x、point.y); 返回{ 视图:窗口, 目标:要素, 标识符:id | | 0, 第x页:第x点, 佩吉:重点是, clientX:point.x, 克利提:重点是 }; } 函数createTouchList(触摸){ if(document.createTouchList) 返回文档。创建触摸列表(触摸); if(Array.isArray(触摸)) 回击; 返回[触摸]; } 日志(“监听”); document.getElementById('x')。addEventListener('touchstart',函数(e){ 日志(message()+(e.touchs?e.touchs.length:'null'); 模拟=假; },对)
点击这里
模拟触摸事件