当页面在IOS / Android上检测到它时,如何将 ondblclick 事件更改为 onclick 事件。难以理解的是我不能只调用ID因为它将数据从数据库传递到Javascript函数。
检查出来。
服务器侧
<?php
echo '<table>';
while($row=mysql_fetch_array($query)){
echo '<tr><td ondblclick="sampFunc("'.$row[0].'","'.$row[1].'")">';
echo $row[0];
echo '</td></tr>';
}
echo '</table>';
?>
客户端:
<script>
$(document).ready(function(){
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)){
/* ?????????????????? */
}
});
function sampFunc(data1,data2){
//-- Something
}
</script>
答案 0 :(得分:1)
我认为您应该重新编写一些代码,以便更轻松地实现您想要的目标。
尝试嗅探用户代理并不是一个好主意。设备可以更换,可以启动新的操作系统,并且需要更多维护。特征检测是一种更好的方法,因为它涵盖了现在和未来的设备,并最大限度地减少了误报。
更新的PHP现在使用HTML5 data-*
属性并删除内联事件:
<?php
echo '<table class="myclass">';
while($row=mysql_fetch_array($query)){
echo '<tr><td data-a="'.$row[0].'" data-b="'.$row[1].'">';
echo $row[0];
echo '</td></tr>';
}
echo '</table>';
?>
新JS检查它是否是触摸屏设备,并将变量touchDevice
定义为true
或false
,具体取决于它。然后使用此var来定义事件。如果是true
(设备具有触控功能),则click
为事件,否则为dblclick
。
事件处理程序现在使用.on()
而不是内联定义,它使用.data()
函数。
<script>
var touchDevice = !!('ontouchstart' in window) || !!('onmsgesturechange' in window);
$(document).ready(function(){
var dblevent = touchDevice ? 'click' : 'dblclick';
$('.myclass td').on(dblevent, function(){
var data1 = $(this).data('a'), data2 = $(this).data('b');
//-- Something
});
});
</script>
或仅使用更新的PHP和doubletap
事件:
$('.myclass td').on('dblclick doubletap', function(){
var data1 = $(this).data('a'), data2 = $(this).data('b');
//-- Something
});