我一直在我的javascript中使用“onclick”,但现在我希望它也适用于Iphone。是否有一种简单的方法可以使所有“onclick”像ontouchstart一样工作,以支持ontouchstart?
或者我是否需要两次编写所有脚本(一个使用onclick,一个使用ontouchstart)? :S
注意:我不想使用jquery或任何其他库。
<!DOCTYPE html>
<title>li:hover dropdown menu on mobile devices</title>
<script>
window.onload = function () {
if ('ontouchstart' in window) {
// all "onclick" should work like "ontouchstart" instead
}
document.getElementById('hbs').onclick = function () {
alert('element was clicked');
}
}
</script>
<a id=id1 href=#>button</a>
答案 0 :(得分:16)
这篇文章得到了更多的关注,所以我将添加另一个常用的,更新的技巧:
// First we check if you support touch, otherwise it's click:
let touchEvent = 'ontouchstart' in window ? 'touchstart' : 'click';
// Then we bind via thát event. This way we only bind one event, instead of the two as below
document.getElementById('hbs').addEventListener(touchEvent, someFunction);
// or if you use jQuery:
$('#hbs').on(touchEvent, someFunction);
{j}的顶部应该声明let touchEvent
不在函数中(也不在document.ready中)。这样你就可以在所有的javascript中使用它。这也允许简单的jQuery使用。
旧回答:
这解决了复制代码的需要(至少可以减少到最低限度)。不确定你是否可以将它们结合起来
function someFunction() {
alert('element was clicked');
}
document.getElementById('hbs').onclick = someFunction;
document.getElementById('hbs').ontouchstart= someFunction;
document.getElementById('hbs')
.addEventListener('click', someFunction)
.addEventListener('touchstart', someFunction);
答案 1 :(得分:-1)
JavaScript无法在Safari中的iPhone上运行的原因是因为iPhone可以选择关闭Javascript。
转到“设置” 然后向下滚动到“ Safari” 然后一直滚动到底部的“高级” 然后打开Javascript!
此外,您可以检查以下代码是否启用了Javascript:
<script type="text/javascript">
document.write("Javascript is working.")
</script>
<noscript>JavaScript is DISABLED!!!!!!</noscript>