在Safari / iOS中无法触发touchstart / click事件

时间:2019-12-31 00:52:30

标签: javascript ios safari click

我在这里读了很多关于SO的帖子,但似乎没有任何帮助。

我尝试过的所有方法都可以在所有台式机浏览器上使用,但不能在iOS上的Safari上使用-它只是拒绝使用任何一种。在尝试加载音频元素(通过真正的用户单击)之后,我试图在播放/暂停按钮上调用clicktouchstart事件,但我无法实现。我知道这没有发生,因为尽管播放尚未开始,但我定位的元素上的单击/触摸事件却会切换按钮中的图标,并且不会发生。

我尝试过的所有操作都在setTimeout内调用,它们具有超大的延迟(5秒以上),以防万一播放器在加载之前就被触发了-但除了音频方面无关紧要为何元素没有像单击或触摸那样反应:

var e = new Event('touchstart');
document.getElementById('playPauseBtn').dispatchEvent(e);

//
var e2 = new Event('click');
document.getElementById('playPauseBtn').dispatchEvent(e2);

//
document.getElementById('playPauseBtn').click();

// not even sure this is a real function - desperation...
document.getElementById('playPauseBtn').touchstart();

//
function triggerEvent( elem, event ) {
  var clickEvent = new Event( event );
  elem.dispatchEvent( clickEvent ); 
}

var elem = document.getElementById('playPauseBtn');
triggerEvent( elem, 'click' );

// using the same function above
triggerEvent( elem, 'touchstart' );

我也尝试了其他一些方法,但您的要点是。我认为对于iOS,我可能正在采用错误的方式。有关在html中的iOS元素上模拟用户触摸事件的一些建议,将不胜感激。

0 个答案:

没有答案