带有event.preventDefault的HTML

时间:2010-08-18 02:30:28

标签: javascript iphone html ios4

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

document.ontouchmove = function(event){ event.preventDefault(); }

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

1 个答案:

答案 0 :(得分:5)

这是一个相当苛刻的解决方案。

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

document.ontouchmove = function (event) {
    if (!event.elementIsEnabled) {
        event.preventDefault();
    }
};

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

element.ontouchmove = function (event) {
    event.elementIsEnabled = true;
};

这是因为:

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

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