锚标记在iPhone Safari中不起作用

时间:2014-03-25 18:16:08

标签: html css iphone mobile-safari anchor

我在iPhone Safari浏览器中遇到了一个名为锚标记的问题。它适用于包括Safari在内的桌面浏览器,但不适用于移动Safari。怪异!

例如,我的网址如下:

http://www.example.com/my-example-article-url-is-like.php#articlebottom

以上网址来自简报,它应该转到文章页面的底部段落,我给了这样的id:

<p id="articlebottom">paragraph is here</p>

当我从Newsletter点击上面的URL时,它会转到文章页面,但不是我指定id的底部参数。虽然我可以看到,当它进入Safari的目标页面时,URL中缺少#articlebottom部分。

任何想法都将不胜感激!

5 个答案:

答案 0 :(得分:6)

Opera,IE,Chrome和Firefox都会将锚点转移到新页面。但是,Safari在重定向上丢失了锚点。

那么如果您在/之前添加ID Tag会怎样?

旧网址路径: http://www.example.com/my-example-article-url-is-like.php#articlebottom

新网址路径: http://www.example.com/my-example-article-url-is-like.php/#articlebottom

另一个解决方案是您必须同时删除&#34; www。&#34;来自域并在Safari /路径名中的anchor tag之前添加正斜杠,然后Safari才能正确响应。 Firefox似乎并不关心,我还没有在IE上进行测试。

答案 1 :(得分:1)

正在尽职尽责并回答任何在Squarespace页面上使用Index导航链接和iOS上的Safari时出现此问题的人。格式化时,我的锚链接无效:

http://sitename.com/page#anchor

然后我试了这个无济于事:

http://sitename.com/page/#anchor"

而不是放弃,点燃我的电脑,并在我尝试的那一天打电话给它:

http://www.sitename.com/page/#anchor

它有效!如果这有助于任何人,那就欢呼吧。

答案 2 :(得分:1)

Safari重定向后丢失了锚标记。因此,请避免任何导致(第二次)重定向的内容。

  • 使用完整网址(http://..。)
  • 请注意是否重定向到www(www.domain ...)
  • 添加尾随/如果没有像.html / .php(mypage /)这样的前缀

    http://www.domain.tdl/mypage/#safari
    

使用像cURL

这样的工具检查重定向可能很有用
curl -I http://www.domain.tdl/mypage/#safari

答案 3 :(得分:0)

我无法在上述解决方案中使用它,因此希望我做了自己的解决方法。

目的:导航到URL“ https://example.com/issues/”后滚动到锚定“ #issues”

  1. 创建链接“ https://example.com/issues?anchor=issues”
  2. 在“ https://example.com/issues”页面上添加js
   <script>
       if (window.location.href.search("anchor=issues") > 0) {
           window.location.href= "https://example.com/issues/#issues";
       }
   </script>

Voila!

-

您会发现打开链接“ https://example.com/issues/#issues”后,Safari从锚点滚动到页面顶部,然后单击以编辑URL并单击“提交”按钮,滚动到锚点。

我希望他们能尽快解决它,然后再增加推送通知支持。

答案 4 :(得分:-1)

我一直在为我的客户解决这个问题。我不会说出名字,但我会分享一个我发现的解决方案,它突然将死锚链接恢复生机,并在网站的移动和桌面版本上工作。

我将故障归因于过多的页面/站点脚本和css,我无法更改,因为虽然此站点属于本地业务,但它是具有自己的协议和最佳实践的全球公司网络的一部分。换句话说,我可以指定内联样式来区分页面元素,但在一天结束时页面必须符合公司指南和规则。

这是我的代码片段,体现了我学到的东西:

href="#anchorname" target="_top"

这里的关键是目标标签_top

根据http://www.w3schools.com/tags/att_a_target.asp,默认目标是_self,而你的html生成器可能没有将特定的代码写入你的页面,也就是说因为它是默认的IT,所以不必指定,我的研究表明,通过指定_top作为目标,解决了死链问题。

我希望这个解决方案适合你。