【问题标题】:iPhone Safari browser, change # hash URL and then Javascript alert message box stop workingiPhone Safari 浏览器,更改 # hash URL,然后 Javascript 警报消息框停止工作
【发布时间】:2018-06-28 11:45:46
【问题描述】:

我在 iPhone Safari 中运行一个网页。该页面有一个按钮。单击它时,将显示一个警告消息框。还行吧。然后,我更改或添加#hash URL 通过在地址栏中输入,然后,警报消息框停止工作。我点击按钮,没有任何反应。没有 javascript 错误,但没有警告消息框。

这是 iOS Safari 已知问题吗?

请分享您的想法和您提出的解决方案。非常感谢!

$(".button").click(function () {
  alert('Hello');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<input class="button" type="button" value="alert" />

注意:

  • 这不是因为我的代码。我也测试过 Here
  • 我已在最新的 iOS 版本中进行了测试。
  • Javascript 本身正在运行
  • 不是 JQuery 问题,纯 JS 代码也不起作用
  • 警告框在 iPhone Chrome 或其他浏览器中工作

【问题讨论】:

  • 你能添加你的按钮html和js代码来触发警报吗?
  • @deceze 请在不重新加载的情况下连续尝试 2 次。第一次尝试是可以的。第二次尝试(更改#部分),并且不会成功。
  • 我可以在 iPad 上复制此问题,如此处所述。单独的 # 有效,#hash 有效,但斜线 #/hash 无效。
  • # 是一个片段分隔符。在 safari Mobile 中,如果您使用 # url 附加任何内容并单击 go 页面实际上并没有重新加载;相反,safari 正试图在网页中找到该片段,我相信这是导致警报不起作用的原因。但是,如果您手动重新加载页面,即使使用 #,警报也可以正常工作。
  • @PyaePyoAung ,不重新加载页面是正常的,但阻止警报等功能应被视为错误,除非 Safari 开发团队在某处指定。

标签: javascript iphone browser safari alert


【解决方案1】:

从来没有在 URL 中使用 # 而不是作为对锚点的引用,但我对此不是 100% 确定... 我认为在 URL 中添加 # 并按 Enter 不会重新加载页面。 url 中的#abc 确实告诉浏览器跳转到名为abc 的锚点,因此这永远不会重新加载页面或触发一些javascript。如果您不想跳转/滚动到实际页面中的某个锚点,请不要在 url 中使用 #。这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    url 中的# 是片段标识符。它期望在 url 示例之后出现一些内容:www.yourpage.com/foo.html#bar。这使它在您的页面中寻找条形片段。页面不会重新加载。

    This might help w3 fragments

    【讨论】:

      【解决方案3】:

      嗯,这可能是因为您没有创建另一个 http request 而是指示浏览器转到(示例)#abc 的所述哈希。

      如果你有一个类似这样的元素和那个 id,它会跳转到页面的那个部分。

      例子:

      <a href="#abc">click to jump down to my section</a>
      
      <p id="abc">my section</p>
      

      我假设当您在 url 中键入 #abc 时,它会寻找那个。当然不存在。

      除此之外,我不完全确定。

      【讨论】:

      • 我相信在地址栏中更改或按 Enter 始终会在任何浏览器中发出新请求。此规则仅适用于锚
      【解决方案4】:

      可能与Alert, confirm, and prompt not working after using History API on Safari, iOS 和https://forums.developer.apple.com/thread/65054 相关

      似乎alert() 变成了undefined。建议的解决方法是改用自定义弹出窗口。

      【讨论】:

        猜你喜欢
        • 2012-07-24
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        相关资源
        最近更新 更多