javascript onclick组合2个事件在ios(iPhone、iPad)上不起作用

javascript onclick组合2个事件在ios(iPhone、iPad)上不起作用,javascript,iphone,ipad,iframe,onclick,Javascript,Iphone,Ipad,Iframe,Onclick,我在onclick中组合了两个Java脚本,以完成两件事: 1.停止音频播放器 2.加载并删除包含视频的iframe 以下代码适用于所有浏览器,但不适用于iOS、iPhone和iPad <a class="aboutclick" href="#" onclick="stop2();document.getElementById('frame').innerHTML='&lt;iframe src=&quot;paul-on-paul.html&quot; width

我在onclick中组合了两个Java脚本,以完成两件事: 1.停止音频播放器 2.加载并删除包含视频的iframe

以下代码适用于所有浏览器,但不适用于iOS、iPhone和iPad

<a class="aboutclick" href="#" onclick="stop2();document.getElementById('frame').innerHTML='&lt;iframe src=&quot;paul-on-paul.html&quot; width=&quot;100%&quot; height=&quot;600&quot; scrolling=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;'"><img src="assets/video-cold.jpg" alt="paul-gregory-video" width="161" height="81" border="0" /></a>
onclick代码开头的stop2关闭音乐播放器。它是Flash音频播放器,因此不适用于iOS。在iPad、iPhone上点击图像并没有任何作用,但有此代码

如果我删除stop2;通过onclick代码,iframe将加载到iOS设备上

我需要能够使用stop2停止音乐,但我也需要它在iOS设备上工作

有什么建议吗


工作示例:单击右下角的视频缩略图

首先,我建议您将所有onclick代码移动到一个函数中,然后在单击时调用该函数,如下所示:

window.foo = function(e) {
    stop2();
    document.getElementById('frame').innerHTML='<iframe src="paul-on-paul.html" width="100%" height="600%" scrolling="no" frameborder="no"></iframe>'
}

...

<a class="aboutclick" href="#" onclick="foo">
  <img src="assets/video-cold.jpg" alt="paul-gregory-video" width="161" height="81" border="0" />
</a>
window.foo = function(e) {
    stop2();
}

window.bar = function(e) {
    document.getElementById('frame').innerHTML='<iframe src="paul-on-paul.html" width="100%" height="600%" scrolling="no" frameborder="no"></iframe>';
}

...

<a class="aboutclick" href="#" onclick="foo" ontouchstart='bar'>
  <img src="assets/video-cold.jpg" alt="paul-gregory-video" width="161" height="81" border="0" />
</a>
这只会使事情更易于阅读和维护。然后,我建议您考虑使用移动触摸事件,而不是点击事件,您将得到如下结果:

window.foo = function(e) {
    stop2();
    document.getElementById('frame').innerHTML='<iframe src="paul-on-paul.html" width="100%" height="600%" scrolling="no" frameborder="no"></iframe>'
}

...

<a class="aboutclick" href="#" onclick="foo">
  <img src="assets/video-cold.jpg" alt="paul-gregory-video" width="161" height="81" border="0" />
</a>
window.foo = function(e) {
    stop2();
}

window.bar = function(e) {
    document.getElementById('frame').innerHTML='<iframe src="paul-on-paul.html" width="100%" height="600%" scrolling="no" frameborder="no"></iframe>';
}

...

<a class="aboutclick" href="#" onclick="foo" ontouchstart='bar'>
  <img src="assets/video-cold.jpg" alt="paul-gregory-video" width="161" height="81" border="0" />
</a>

似乎iOS被你的stop2电话噎住了。您可能希望尝试检测浏览器是否为iOS设备一种简单但不太好的方法可能是使用用户代理字符串,或者更好地检查浏览器是否支持该功能。然后,如果您检测到它是iOS浏览器,只需从stop2返回即可


希望这有帮助

这是一个非常糟糕的答案,没有任何帮助。他应该使用addEventListener为onclick事件附加一个中心函数。此外,他应该在他的stop2函数中检测到一些东西,他只是假设它是arround,而iOS似乎在阻止它。如果他还有其他事情要做的话,从stop2回来不是一个解决办法。是的,我不同意你对几点的评论。他提到stop2是一个关闭Flash音乐的功能,他提到它对iOS设备没有任何作用。因此,如果他在检测到一个iOS设备后才回来,他会没事的。我同意他应该为onclick事件使用一个集中的函数,但是上面的答案已经提到了这一点;另外,OP并不是这么要求的。我只是在代码末尾添加了stop2,它很有效。我尝试实现这段代码,但没有效果,但在代码末尾添加stop2效果很好。