我正在开发一个可以在离线模式下与移动 Safari 一起使用的网站。我可以将其添加到主屏幕并从那里加载。但是,一旦从主屏幕打开,单击某些链接将跳出应用程序并在移动 safari 中打开——尽管我在所有链接点击时都使用了 preventDefault() !
该应用程序在<body>
关卡上绑定了一个 onclick 事件处理程序。使用事件委托,它捕获对任何链接的任何点击,查看其href(例如“帮助”或“评论”),并动态调用javascript模板并更新页面。事件处理程序在事件对象上调用 preventDefault() - 对于某些链接这是有效的,并且页面会使用模板输出进行更新。但是,对于在输出模板结果之前导致本地数据库命中的链接,这些链接会在移动 safari 中打开。
在桌面 safari 中,即使我处于离线状态,所有链接也能正常工作 - 正在发生一些特定于移动 safari 的事情。
关于为什么某些链接可以离线工作,而其他链接不能工作的任何想法?清单文件中没有列出任何有问题的链接 URL,但它们不需要(不应该)列出,因为链接操作被阻止。
一些额外的奇怪之处: * 一旦我点击加载到移动 safari 中的链接,即使我处于离线状态,这些相同的链接现在也可以正常工作,并且填充了来自数据库的数据的模板可以正常工作。换句话说:链接在从主屏幕打开时失败,但不是从移动 safari 离线中打开 * 更改链接以删除数据库命中(使用模拟数据库结果填充模板)解决了问题,并且可以单击链接在主屏幕的应用程序中。