URL 片段中的多个参数

Posted

技术标签:

【中文标题】URL 片段中的多个参数【英文标题】:Multiple parameters in URL fragment 【发布时间】:2014-06-03 22:18:52 【问题描述】:

是否有允许在 URI 片段中指定多个参数的标准格式? (哈希#之后的部分,不是查询字符串。)

最相关的信息是这个问题:Multiple fragment identifiers correct in URL?。片段的允许字符也可以在该问题中找到。

是否可以使用分号来分隔多个参数,例如:

http://example.net/page.html?q=1#param1=foo;param2=bar

使用此方法是否有任何我应该注意的无意行为?如果文档中没有值为param1的ID怎么办?

就本问题而言,仅考虑 HTML 资源的 URI。

【问题讨论】:

【参考方案1】:

我认为您应该阅读以下内容:http://en.wikipedia.org/wiki/Fragment_identifier#Examples

所以多个参数的实际标准格式应该是#param1=value1&param2=value2 您可以看到Media Fragments URI 1.0 和 PDF 文档都使用这种方式。 HTML 资源似乎没有标准,因为您可以以任何您喜欢的方式解析 javascript 中的片段。但我会使用相同的格式,因为它看起来更自然,类似于查询字符串格式。如果浏览器找不到任何 id/name 等于您的哈希片段的元素,它会默认导航到文档的开头。

浏览器还会将完整的哈希片段视为可能的 id/name。所以他们会寻找 id/name 等于param1=value1&param2=value2 而不仅仅是param1

【讨论】:

如果您有兴趣让您的 AJAX 应用程序可被搜索引擎抓取,这里是来自 Google 的关于使用哈希片段的指南 #! developers.google.com/webmasters/ajax-crawling/docs/… 谢谢。现在已弃用 webmasters.googleblog.com/2015/10/…

以上是关于URL 片段中的多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 将哈希片段参数附加到分页 URL

从 AngularJS url 中删除片段标识符(# 符号)

下文中的哈希片段指的是啥?

在多个片段中的片段中实现选项卡

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

在保持相同行为的同时隐藏 url 中的 #hash 片段?