0

我有一个用例,我将页面焦点设置为特定元素(之前有一个锚点)。当用户未登录时,会重定向到登录页面,登录后,用户会重定向到相关页面,并带有编码的 URL。

我看到链接#target 形式的 URL 按预期工作(专注于元素),而 url 编码的链接 link%23target 没有。这是预期的行为吗?

编辑:如果这是预期的行为,是否有解决方法可以专注于目标?如,一种解决 url 编码的方法?

编辑添加更多信息:
假设有代码

page1.html
... html before the anchor ...
<a name="test">Some code</a>
... html after the anchor ...

我正在以 page1.html%23test 的身份访问该页面。这与 page1.html#test 的工作方式不同。有没有一个jQuery方法来实现这个?即使在 url 编码之后,location.hash 是否会包含测试?我无法控制更改 url 编码。

编辑:

因为我知道在页面被重定向后我想去哪个命名的锚点,所以我做了一个

window.location.hash = namedAnchor  

解决问题。仅当客户成功登录时才会输出此 JS 行。解决了我的问题,尽管不是我正在寻找的通用答案。我正在寻找一种避免在 url 编码中转义 # 的方法。

4

2 回答 2

5

是的。将 # 编码为 %23 有效地表示“我只是指一个普通的旧“#”字符,而不是 URL 片段”。其他保留字符也是如此:对它们进行转义会阻止它们在 URL 中具有特殊含义。

在您的情况下,您确实希望在将 URL 作为参数传递给您的登录页面时对其进行编码,但您的登录页面应该在执行重定向之前对 URL 进行解码。

于 2009-07-15T06:06:51.733 回答
0

您可以使用 PHP 或其他脚本语言或 JavaScript 使用 encodeURIComponent 来解析此字符串。我为此写了一篇文章,您可以查看http://www.stoimen.com/blog/2009/05/25/javascript-encode-cyrillic-symbols-with-encodeuricomponent/

希望能帮到你。但是,尽管有默认行为,您必须使用任何一种方法进行检查。

于 2009-07-15T06:11:25.950 回答