Javascript的行为与触摸不同

问题描述:

编程相当新颖,只能在Javascript中使用(到目前为止)。我正在建立一个网站,您可以点击图片。它在个人电脑,Mac和Android智能手机上都有魅力,但是当我在iPad(Chrome)和iPhone(包括Chrome和Safari)上试用时,某些点击不会触发这些功能。这是个常见的问题吗?我添加事件监听器如下。Javascript的行为与触摸不同

document.getElementById("displayRight" + count).addEventListener("click", triggerRight); 

的功能是这样的:

function triggerRight() { 

var compare = activeElement; 
getIdRight(); 
if (compare === activeElement) { 

    slideIndex = slideIndex + 1; 
} else { 
    slideIndex = 2; 
} 

slidePic(); 
} 

function slidePic() { 

var i; 
var x = document.getElementsByClassName("mySlides" + activeElement); 

if (slideIndex > x.length) { 
    slideIndex = 1; 
} 

if (slideIndex < 1) { 
    slideIndex = x.length; 
} 

for (i = 0; i < x.length; i++) { 
    x[i].style.display = "none"; 
} 

x[slideIndex - 1].style.display = "block"; 
} 
+0

,我收到了类似的问题,这个答案帮我解决它在我的web应用程序:https://*.com/问题/ 14795944/jquery-click-events-not-working-in-ios –

+0

它看起来像一个梦,但不会工作。我尝试了'* {cursor:pointer;}'在我的CSS中,但无法让它工作。你是如何解决它的? @ZachA –

+0

这篇文章深入探讨了这个问题:https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html它也列出了一个解决方法。光标:指针技巧似乎是一个广泛使用的方法,但似乎它不起作用,如果您将样式应用于:hover,所以我担心使用*来设置它可能会对你有用。尝试使用指针技巧对受影响的元素进行造型。否则,我不确定问题出现在哪里,因为它在其他操作系统上按预期工作。 –

苹果iOS使用 “触摸” 事件。你可能想测试和抽象的点击/触摸事件,如下列:

var trgEvent = 'ontouchstart' in window ? 'touchstart' : 'click'; 

document.getElementById("displayRight" + count).addEventListener(trgEvent, triggerRight); 
+0

它看起来像一个很好的和非常逻辑的解决方案,不幸的是我不能得到它的工作。这些功能现在不会在电脑或手机上触发。我将所有'click'切换到'trgEvent'。 @kenn –

+0

另外,'window'后的'?'是什么意思? @kenn –

+0

这是if语句的简写(三元运算符):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator @Django Joe –