TL; 博士
我的 HTML/CSS/JS Web 应用程序在我的所有 Android 设备和笔记本电脑浏览器上都能完美运行,但在 iOS 上的 Safari 中却不行。相反,地图不会加载,也不会应用点击侦听器。似乎 Javascript 仅部分加载,但这很荒谬。
为什么 iOS Safari 似乎只加载了我的脚本的一半?
你自己看!在我的 GitHub 站点上查看演示。
我知道根据社区准则这是一个不好的问题,但我只是不知道要问什么问题。没有控制台错误要跟进,完全没有线索。
背景
我正在开发一个名为 Bike Share Explorer 的小应用程序。这是一个使用 Mapbox GL JS 和 Google MDL 的网络应用程序。该网络地图可让人们探索自行车共享系统和这些系统中的自行车可用性。
碎片
我正在使用 browserify 将 Mapbox GL JS 和我需要的其他代码与我的页面的 Javascript 捆绑在一起。该应用程序是为在 Express 服务器上运行而构建的,前端是使用 Pug 编写的,但是无论我是使用 Express 服务还是从文件系统服务,一切都可以在我的计算机上正常运行。
我试过的
根据各种 SO 帖子和博客,我...
- 确保使用 HTTP 1.1 版
- 确保我的标题包含
Content-Type: text/html
- 使用cors在我的测试服务器上设置 CORS (真的,我尝试了所有我能想到的东西)
- 尝试将身体包裹在一个
<div onclick="void(0)">
(查看更多) - 尝试将光标更改为指针(在 body 元素上完成)
- 尝试使用
touchstart
而不是click
我在几个设备上使用 BrowserSync 测试了所有这些方法。除了 iPhone,一切都很好。
然后我转而进行一些调试,alert
以尝试查看实际运行的代码。从那我可以说我的脚本正在执行,并且 Mapbox GL JS 说它是受支持的,但是当我把它放在alert
里面时map.on("load", () => {});
,它从来没有在 iOS Safari 上触发。如果您在另一台设备上访问该网站,您会注意到它确实会在该设备上触发。
我希望我有一个更具体的问题要问,但我没有。
为什么 iOS Safari 似乎只加载了我的脚本的一半?