我在Chrome的开发者工具中启用了“模拟触摸事件”选项。我设置了一个简单的测试程序,当我触摸<div>
时会发出警报。该程序在我的Galaxy Nexus上运行正常,但是当我点击Chrome中的<div>
时,即使启用了“模拟触摸事件”选项,也没有任何反应。有什么建议?我是否正确使用此工具?
这是我的代码 - 没什么太花哨的。
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
#main_div
{
position: absolute;
width: 50px;
height: 20px;
background-color: red;
top: 50%;
left: 20px;
}
</style>
<script type="text/javascript">
function init()
{
main_div = document.getElementById("main_div");
main_div.ontouchstart = function()
{
alert("here");
}
}
</script>
</head>
<body onload="init()">
<div>
<p id="x">hello</p>
<p id="y"></p>
</div>
<div id="main_div">
hello
</div>
</body>
</html>
答案 0 :(得分:12)
让我感到困惑的是,除了选中“模拟触摸事件”复选框之外,还必须选中主“启用”复选框以启用覆盖。一旦检查完毕,它就可以正常工作。
答案 1 :(得分:4)
触摸事件在Chrome版本21中有效(不确定以前的版本)但是您必须打开“开发人员工具”窗口才能发生触摸事件。如果你关闭窗口,你将回到正常的鼠标事件。
答案 2 :(得分:2)
我注意到的一个重点 - 检查“模拟触摸事件”不会禁用鼠标事件,它也只会添加触摸。
答案 3 :(得分:1)
你能分享你试过的代码吗? 这是一个与我合作的示例代码,包括iPhone和Chrome 19
<head>
<script>
function listen(elem, evnt, func) {
if (elem.addEventListener) // W3C DOM5.
elem.addEventListener(evnt,func,false);
else if (elem.attachEvent) { // IE DOM7.
var r = elem.attachEvent("on"+evnt, func);
return r;
}
}
function attachListeners() {
var touch_div = document.getElementById('touch_me');
listen(touch_div,'touchmove', function(event) {
touch_div.innerHTML="being touched " + event.targetTouches.length;
touch_div.style.background =green;
}, false);
listen(touch_div,'touchstart', function(event) {
event.preventDefault();
touch_div.innerHTML="touchstart";
touch_div.style.background ='green';
}, false);
listen(touch_div,'touchend', function(event) {
touch_div.innerHTML="thanks!";
touch_div.style.background ='#CCFF66';
}, false);
listen(touch_div,'click', function(event) {
touch_div.innerHTML="hey - touch, not click!";
touch_div.style.background ='red';
}, false);
listen(touch_div,'onmouseup', function(event) {
touch_div.innerHTML="hey - that was a click!";
touch_div.style.background ='';
}, false);
}
function run_onload() {
attachListeners();
}
</script>
</head>
<body onload="run_onload()">
<div id="touch_me">Touch me!</div>
</body>
答案 4 :(得分:1)
唯一对我有用的是切换Emulation&gt;中的Emulate Touch Events。每次重新加载页面时,Chrome 45中的传感器。这是一个非常糟糕的解决方案。希望有人找到一个不那么讨厌的修复。
答案 5 :(得分:0)