HTML编码的链接和锚点

时间:2009-07-15 06:02:07

标签: urlencode html-encode

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

我看到表单链接#target的URL按预期工作(关注元素),而url编码的链接链接%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还会包含测试吗?我无法控制更改网址编码。

编辑:

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

window.location.hash = namedAnchor  

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

希望能帮助你。但是,尽管存在默认行为,您必须使用任一方法进行检查。