带有event.preventDefault的HTML

Yaz*_*zmi 0 html javascript iphone ios4

如果禁用html文档.(没有滚动......)

document.ontouchmove = function(event){ event.preventDefault(); }
Run Code Online (Sandbox Code Playgroud)

我可以有选择地启用html文档中的元素吗?比如div,span我应该使用哪些javascript来做到这一点?

Dan*_*idy 5

这是一个相当hacky的解决方案.

touchmove按如下方式更改处理程序:

document.ontouchmove = function (event) {
    if (!event.elementIsEnabled) {
        event.preventDefault();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后,对于要启用的元素:

element.ontouchmove = function (event) {
    event.elementIsEnabled = true;
};
Run Code Online (Sandbox Code Playgroud)

这是因为:

  • touchmove在元素上触发事件时,这两个事件处理程序都在冒泡阶段处理事件.这意味着元素touchmove处理程序首先触发,因为它最接近事件的源.
  • 当两个事件处理程序处理同一事件时,它们会收到相同的事件对象.
  • 您可以在事件对象上设置自己的任意属性.

因此,元素touchmove处理程序只是在事件对象上设置自定义属性,然后文档touchmove处理程序检查该自定义属性以确定是否应该阻止默认操作.