javascript - 在某些 iOS 设备上使用触摸 yt iframe 阻止网页 java-scripts 滑动,如何解决?
问题描述
我正在开发门户网站,包括一些来自 yt 的视频,但遇到了问题,导致它在某些 iOS 设备上无法使用。为了这个问题,我简化了它。
我有一个简单的网页,其中粘贴了从 youtube 页面共享菜单中获取的 iframe 代码。在某些 ios 设备上滚动或只是滑动页面后手指触摸视频其他页面 javascripts 停止工作。
我已经尝试过使用不同的视频和不同的 iframe 属性集,但我得到了相同的行为。
我想出了简单的codepen https://codepen.io/Poziomka/pen/wvwjMZx(https://codepen.io/Poziomka/full/wvwjMZx -全屏) - 它包含随机视频和按钮显示和隐藏一些文本点击。
html
<section class="article__container">
<h1 class="article__title">Ios iframe scroll bug</h1>
<iframe src="https://www.youtube.com/embed/bltXlWpkDpg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>When you swipe touching the video on some ios, it blocks java script on the page</p>
<button class="js-button">Show hiden text</button>
<span class="article__text-to-toggle js-text">Text toggled by button</span>
</section>
js
const text = document.querySelector(".js-text");
const button = document.querySelector(".js-button");
button.addEventListener("click", () => {
text.classList.toggle("article__text-to-toggle--visible");
});
在带有 iOS 11.4.1 的 iPhoneSE、带有 iOS 11.4 的 iPadMini、带有 iOS 12.2 的 iPhone7 上的 Safari 中,滚动后,视频被触摸,按钮停止工作,我无法再隐藏或显示文本。在装有 iOS 11.1.2 的 iPadAir 上的 Safari 中不会出现此问题。
在 iPhone 7 iOS 上的浏览器堆栈上调试此问题时,页面加载时 v12 有时会出现错误:“尝试从没有正确的 'allow' 属性的框架调用 enumerateDevices。” 但是当按钮被阻止时没有其他错误。它似乎与问题有关,但每次按钮都会阻塞,而错误只是有时发生。
如何解决?
解决方案
推荐阅读
- javascript - 如何在部署 expressjs 应用程序时修复 heroku 错误?
- c++ - vcpkg:指定结构成员对齐
- c++ - 如何在模板参数中分离函数类型返回类型和参数
- ruby-on-rails - array iteration for ruby on rails
- python - 如何使用 Python/Selenium 设置代理身份验证用户名:密码
- javascript - 通过客户端站点上的 api 获取 https 内容,但浏览器引发混合内容 http 错误
- swift - Swift 循环遍历 [String: Any] 并获取 Struct 或 Class 属性的差异
- linux - 除非我运行一些命令,否则脉冲音频不会在启动时启动
- python - Sympy:如何最小化多元表达式中的乘法次数?
- c - 遍历 3d 数组