正在寻找Firefox的错误位置的解决方法。阅读可以使用所有有效的片段值

时间:2017-01-10 01:01:50

标签: javascript firefox

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

相关

0 个答案:

没有答案