iPhone Safari浏览器,更改#hash URL然后Javascript警报消息框停止工作

问题描述 投票:24回答:3

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

video recording of the issue

这个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或其他浏览器中使用
javascript iphone browser safari alert
3个回答
1
投票

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

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


0
投票

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


0
投票

url中的#是片段标识符。在网址示例之后,我们期待一些事情:www.yourpage.com/foo.html#bar。这使得它在页面中查找条形片段。页面不会重新加载。

This might help w3 fragments


0
投票

好吧,这可能是因为你没有制作另一个http request,而是指示浏览器转到(例如)#abc的哈希值。

如果你有一个像这样的元素与该id的元素,它将跳转到页面的该部分。

例:

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

<p id="abc">my section</p>

我假设当你在网址中键入#abc时,它会寻找它。当然,哪个不存在。

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

© www.soinside.com 2019 - 2024. All rights reserved.