【问题标题】:WebKit losing parameters in URLs with skip linksWebKit 在带有跳过链接的 URL 中丢失参数
【发布时间】:2026-01-12 15:05:01
【问题描述】:

我们有一些生成的页面,其 URL 包含参数,例如 http://example.com/page.do?param1=hello。这些页面内部包含命名锚点,like this。并且有相应的链接引用了命名的锚点,like this。今天大多数人称这些为“跳过链接”。

单击跳过链接应导致浏览器创建并遵循与原始 URL 匹配的 URL,并在末尾添加命名的锚点:http://example.com/page.do?param1=hello#here

在 Firefox 和 IE 上,这可以正常工作。在 Chrome、Safari 和其他基于 WebKit 的浏览器上,参数丢失,导致 http://example.com/page.do?#here 对我们的站点无效,只会导致 404 错误。

有趣的是,如果您手动将完整链接放入地址栏中并按 Enter,它的行为正常。

我在谷歌上搜索了一段时间,看到很多关于 WebKit 存在跳过链接问题的讨论,但没有一个与这里丢失参数的情况相匹配。

这种参数丢失是一个已知的错误吗?有人见过解决方法吗?

【问题讨论】:

    标签: webkit url-parameters


    【解决方案1】:

    我遇到了同样的问题。据我所知,这与使用这样的元标记有关:<base href="http://example.com" />。一旦设置好我的链接指向example.com#foo 而不是example.com?foo=bar#foo

    知道我发现了这个问题。所以锚标签行为是一个已知的事情: Is it recommended to use the <base> html tag?

    由于我无法删除基本标记,我将尝试使用 JavaScript 来处理。

    【讨论】: