0

我在我的 application.html.erb 中使用以下 javascript 以允许我的 Web 应用程序在从 Safari 保存到主屏幕时表现得像 iOS 应用程序。此脚本可防止应用程序中的链接在 Safari 中打开:

<script>(function(a,b,c){if(c in b&&b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener("click",function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;"href"in d&&(d.href.indexOf("http")||~d.href.indexOf(e.host))&&(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,"standalone")</script>

它工作得很好,当应用程序保存到我的主屏幕时,所有导航都按预期工作,除了“退出”按钮,它会出错:

“您要查找的页面不存在。您可能输入了错误的地址或页面可能已移动。”

当我从 Safari 而不是主屏幕访问 Web 应用程序时,不会发生这种情况,然后我点击“退出”按钮 - 它按预期运行并将用户退出(通过“删除”方法破坏会话)。

任何想法 javascript 的哪一部分可能导致此错误或我如何解决此问题将不胜感激。

4

1 回答 1

0

遵循最小化的脚本有点困难,但我会咬一口。

该脚本看起来像是要阻止链接正常工作,document.location.href=clicked_link.href而是使用 javascript 重定向。

疯狂的猜测:您的“注销”链接是使用https协议提供的,但是这个脚本重定向而不更改协议。或者,也许,它不是真正的链接,而是类似于<a href="javascript:void(0)"> 事件侦听器,在这种情况下document.location=javascript:void(0),没有找到页面。

于 2013-09-22T20:53:58.763 回答