javascript - 如何在 TypeScript 中手动触发 TouchEvent

标签 javascript typescript jasmine karma-jasmine

我想手动触发触摸事件,但我无法调用。 这在 JavaScript 中是可能的,但 TypeScript 无法实现。

例子:

 let touchStart: TouchEvent = document.createEvent('TouchEvent');
 touchStart.initEvent('touchstart', true, true);
 element.dispatchEvent(touchStart);

如果我尝试这样做,我可以触发 touchStart 事件,但我无法获得 changedTouches[0].pageXchangedTouches[0].pageY

基于 this link我试过如下,

 touchStart.changedTouches = [
    pageX: x
    pageY: y
  ]

但我无法在 changedTouches 中分配值,因为该属性是只读的。

如何实现?在 TypeScript 中使用 changedTouches

最佳答案

这是 TypeScript 的 lib.d.ts 的一个实际错误,它定义了 JavaScript 和 DOM 中所有内容的类型。

我打开了一个 ticket和一个 pull request解决这个问题。

如果它们被接受,您可以期待 new TouchEvent(eventType, initArguments); 的标准方式在未来版本的 TypeScript 中工作。

参见 this MDN tutorial了解在 JavaScript 中执行此操作的正确方法。

关于javascript - 如何在 TypeScript 中手动触发 TouchEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575330/

相关文章:

typescript:使用推断永远不会得到不同的结果

javascript - Jasmine,测试 Javascript 对象是否包含另一个 Javascript 对象

javascript - EcmaScript 和 JavaScript 指的是同一种语言吗?

javascript - 未捕获引用错误 : camera is not defined

javascript - 使用自定义模块路径时 IntelliJ Javascript "Cannot Find Declaration to go to"

javascript - React - 如果父状态发生变化,则调用子组件中的函数

javascript - 如何修复react-redux中循环依赖导致的 'Invariant Violation'

d3.js - 用d3和typeScript绘制表格

angular - karma 报应中的 lcov.info 文件, Angular 未生成

javascript - 如何将 jsdom.jQueryify 与 Jasmine Node 一起使用?