Firefox(但不是Chrome)会破坏location.hash结果:
https://jsfiddle.net/nsoaee4q/14/
哪种解决方法适用于所有有效的片段值?
不是这样,请注意:
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script>
"use strict";
location.hash = "'%97";
console.log(location.hash);
// Expected: #'%97
// SUCCESS on Chrome
// FAIL on Firefox: #%27%97
// Attempted fix
console.log('#'+decodeURIComponent(location.href.split("#")[1] || ""));
// FAIL 'Uncaught URIError: URI malformed'
</script>
注意:这不是Encoding of window.location.hash的重复,而且该问题的答案解决方案是错误的。
更新:上述示例的%97在评论中声明无效。这是一个避免这个问题的例子:
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script>
"use strict";
location.hash = "%20'";
console.log(location.hash);
// Expected: #%20'
// SUCCESS on Chrome
// FAIL on Firefox: #%20%27
// Attempted fix
console.log('#'+decodeURIComponent(location.href.split("#")[1] || ""));
// FAIL: # '
</script>
注意:标题之前是:“我如何解决Firefox的错误位置。阅读?”,更改为澄清。
注意:Kaiido在2017-01-10下面的答案不符合所有有效哈希值的要求,但确实符合不太严格的要求,如其评论中所述。
注意:此错误报告与https://bugzilla.mozilla.org/show_bug.cgi?id=1329960,图片http://i.imgur.com/JrsdeK6.png
相关