Firefox错过了由“\ 1”组合的字符串

时间:2014-01-28 11:40:53

标签: javascript

我正在修复一些客户端的代码,他将表单输入值由“\ 1”组合成一个隐藏的输入并提交,这是简单的示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <button id="btn">send</button>
    <form name="test" id="test" method="post" action="test.php">
        <input type="hidden" name="a" value="test">
        <input type="hidden" name="b" value="123">
        <input type="hidden" name="result" id="result">
    </form>
    <script>
        var form = document.getElementById('test'),
            str = '';

        for (i = 0; i < form.length; i++) {
            str += encode(form.elements[i].value + "\1";
        }

        result = str.split("\1");
        document.getElementById('result').value = (result.join("\1"));
        form.submit();
    </script>
</body>
</html>

Chrome和IE浏览器会很好,但即使我确定合并的字符串是正确的,Firefox也只能获得第一个值。

由于它是一个大项目,我只是帮助修复这样的一些错误,因此我不能更改太多的代码,以防网站的其他部分可能崩溃,所以我真的需要弄清楚为什么Firefox打破由“\ 1”组合的值。

2 个答案:

答案 0 :(得分:0)

看起来“\ 1”正在被“SOH”取代..可能是某些语言环境问题

答案 1 :(得分:0)

试试这个

for (i = 0; i < form.length; i++) {
        str += encode(form.elements[i].value) + "\\1";
    }