2010-08-18 42 views
0

如果html文档被禁用。 (不滚动...)带event.preventDefault的HTML

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

我可以选择性地启用html文档中的元素吗?如div,跨度 我应该用什么javascript来做到这一点?

回答

5

这是一个相当不好的解决方案。

更改touchmove处理程序如下:

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

然后为要启用一个元素:

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

这样做是因为:

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

因此,元素touchmove处理器只是将事件对象的自定义属性,然后为自定义属性的文件touchmove处理程序检查,以确定是否应被阻止的默认操作。

+0

有没有办法在一个元素内滚动而不是整个页面。我尝试设置div高度:100px;溢出:滚动;在CSS中,但它没有工作。 (div的实际高度是500px)。 – Yazzmi 2010-08-18 05:28:10

+1

iPhone故意不支持'overflow:scroll',因为Apple认为它会在移动设备上产生可用性问题。根据你想要做的,也许这会帮助你:http://cubiq.org/scrolling-div-on-iphone-ipod-touch – 2010-08-18 06:16:22

+0

这很有效。我已经看到各种各样的人评论这个问题,但我从来没有看到任何工作以及你的解决方案。谢谢! – JamesK89 2012-11-08 22:36:16