我在这里读了很多关于SO的帖子,但似乎没有任何帮助。
我尝试过的所有方法都可以在所有台式机浏览器上使用,但不能在iOS
上的Safari上使用-它只是拒绝使用任何一种。在尝试加载音频元素(通过真正的用户单击)之后,我试图在播放/暂停按钮上调用click
或touchstart
事件,但我无法实现。我知道这没有发生,因为尽管播放尚未开始,但我定位的元素上的单击/触摸事件却会切换按钮中的图标,并且不会发生。
我尝试过的所有操作都在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
元素上模拟用户触摸事件的一些建议,将不胜感激。