javascript getAttribute()不';我不能在iPad2上工作
我正在尝试做一个基于触摸屏的HTML应用程序,并在iPad2上进行了测试。然而,HTML中的自定义属性似乎存在一些问题 这是我的密码javascript getAttribute()不';我不能在iPad2上工作,javascript,html,ipad-2,touch-event,getattribute,Javascript,Html,Ipad 2,Touch Event,Getattribute,我正在尝试做一个基于触摸屏的HTML应用程序,并在iPad2上进行了测试。然而,HTML中的自定义属性似乎存在一些问题 这是我的密码 <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> <script type="text/javascript"> document.addEvent
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
document.addEventListener('mouseup',onTouchReleased, true);
document.addEventListener('touchend',onTouchReleased, true);
function onTouchReleased(e) {
// Capture the event
if(e.preventDefault)
e.preventDefault();
if(e.stopPropagation)
e.stopPropagation();
console.log(e.target);
console.log(e.target.getAttribute("itemindex"));
}
</script>
</head>
<body>
<img itemindex="0" src="video.jpg"/>
<div itemindex="1">HELLO1</div>
<p itemindex="2">HELLO2</p>
</body>
</html>
在此处插入标题
文件。addEventListener('mouseup',onTouchReleased,true);
文件。addEventListener('touchend',onTouchReleased,true);
功能已释放(e){
//捕捉事件
如果(如默认)
e、 预防默认值();
如果(如停止播放)
e、 停止传播();
console.log(如target);
log(e.target.getAttribute(“itemindex”);
}
你好
你好
当我在电脑上的Chrome/Safari上运行它时,当我单击项目时,我能够在控制台中看到正确的itemindex
但是,在iPad2上,我将
的项目索引作为0
,这是正确的,但是如果div
或p
项目索引作为错误返回
TypeError:表达式“e.target.getAttribute”[undefined]的结果不是函数
有人能解释一下这一点吗,并告诉我任何可用的解决方法。对于触摸设备,您需要使用touchend
而不是mouseup
事件
基于触摸屏的设备不支持许多鼠标事件,例如mouseup
,mousedown
,mousemove
,mouseover
,mouseout
,但支持点击事件。您也可以使用单击事件来尝试代码
更新
如果需要将事件附加到文档
,可以使用函数使用以下代码段
例如:
function onTouchReleased(e) {
// Capture the event
if(e.preventDefault)
e.preventDefault();
if(e.stopPropagation)
e.stopPropagation();
var touch = e.touches[0];
var pointTarget = document.elementFromPoint( touch.pageX, touch.pageY );
console.log(pointTarget);
console.log(pointTarget.getAttribute("itemindex"));
}
我做到了;-)抱歉,我忘了在第一次编辑中添加该行。您是否尝试将事件附加到特定元素,而不是文档?我现在尝试了。document.getElementById(“divElement”).addEventListener('mouseup',onTouchReleased,true);document.getElementById(“divElement”).addEventListener('touchend',onTouchReleased,true)
和HELLO1
但它仍然是相同的,console.log(e.target)
返回什么?它返回[object HTMLElement]。但是,如果我将上述代码更改为document.getElementById(“divElement”).addEventListener('click',onTouchReleased,true)
而不是touchend
,它似乎工作正常。