我正在尝试编写一个可以创建人工TouchEvents
的浏览器加载项。到目前为止,我可以在Chrome中运行它,但是Firefox似乎不支持TouchEvents
,因为尝试使用new TouchEvent(...)
创建一个可以生成:
ReferenceError: TouchEvent is not defined
我想知道是否可以通过某种方式自己在插件中实现TouchEvent
还是以其他方式调度具有所有必要属性的事件,例如TouchEvent
。
但是,如果我创建一个CustomEvent
并为其分配有效的TouchEvent
(即touches
,targetTouches
和{{1} })这些属性在网页收到事件时不会一直存在。
有什么方法可以完成我想要做的事情,还是让我无法在Firefox中正常工作?
答案 0 :(得分:0)
万一其他人有这个问题,这是我找到的解决方案。您可以创建自己的类来扩展UIEvent,如下所示:
class TouchEvent extends UIEvent {
constructor(name, initDict) {
super(name, initDict);
this.touches = initDict.touches;
this.targetTouches = initDict.targetTouches;
this.changedTouches = initDict.changedTouches;
}
}
一个警告是,这些事件必须由在与将接收它们的处理程序所在的域中运行的脚本来构造,否则会出现Permission denied to access property
错误。为此,我的解决方案是使用扩展程序的内容脚本在当前文档的正文中添加一个script元素,并将其textContent属性设置为用于创建和分配touch事件的javascript代码。