我在Firefox和IE之间遇到了困惑,主要是在Firefox中,它会自动解码哈希参数,导致我无法在Javascript中使用它。而IE不会自动解码URL,因此不会给我阅读错误。
我的问题类似于这个问题,只是我没有使用ASP.NET:ASP.NET MVC自动解码来自AJAX的JSON编码参数
所以,如果我拿一个像example.com/#question=!%40%23%24%25^%26*(
的URL,其中"!%40%23%24%25^%26*("是使用encodeURIComponent编码的,在IE中访问哈希时,它将保留为"!%40%23%24%25^%26*(",但在Firefox中访问哈希时,它会自动解码为"!@#$%^&*("
这个问题在于,在我的脚本中,我使用decodeURIComponent解码已编码的值,如果字符串确实被编码,那么这也是可以的。由于在Firefox中它已经被解码了,所以它会给我一个格式不正确的URI序列错误,而IE则根本不会给我任何错误。
我该如何解决这个问题?
window.location.hash.split("#").splice(1).join("#")
来使其更加健壮。 - fourthnen