読者です 読者をやめる 読者になる 読者になる

へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Safariだけ文字が見えないASCIIコードの罠。HTMLタグには、valueにむかし使われていた文字(ベル文字とかヌル文字とか)が入らない(Safariのみ)

次のコードがある。スペースキーより前の文字についてvalueに入れている値と違うか判定する

<html>
    <input id="t" type="text" value="">
    <script>
        for (i = 0; i < 20; i++) {
            C = String.fromCharCode(i);
            t = document.getElementById('t');
            t.value = C;
            console.log(i + ': ' + (C == t.value));
        }
    </script>
</html>

Chrome (Mac)

hoge.html:8 0: true
hoge.html:8 1: true
hoge.html:8 2: true
hoge.html:8 3: true
hoge.html:8 4: true
hoge.html:8 5: true
hoge.html:8 6: true
hoge.html:8 7: true
hoge.html:8 8: true
hoge.html:8 9: true
hoge.html:8 10: false
hoge.html:8 11: true
hoge.html:8 12: true
hoge.html:8 13: false
hoge.html:8 14: true
hoge.html:8 15: true
hoge.html:8 16: true
hoge.html:8 17: true
hoge.html:8 18: true
hoge.html:8 19: true

10番はLF \n
13番はCR \r

Firefox (Mac)

0: true hoge.html:8:13
1: true hoge.html:8:13
2: true hoge.html:8:13
3: true hoge.html:8:13
4: true hoge.html:8:13
5: true hoge.html:8:13
6: true hoge.html:8:13
7: true hoge.html:8:13
8: true hoge.html:8:13
9: true hoge.html:8:13
10: false hoge.html:8:13
11: true hoge.html:8:13
12: true hoge.html:8:13
13: false hoge.html:8:13
14: true hoge.html:8:13
15: true hoge.html:8:13
16: true hoge.html:8:13
17: true hoge.html:8:13
18: true hoge.html:8:13
19: true hoge.html:8:13

Safari (Mac)

[Log] 0: false (hoge.html, line 8)
[Log] 1: false (hoge.html, line 8)
[Log] 2: false (hoge.html, line 8)
[Log] 3: false (hoge.html, line 8)
[Log] 4: false (hoge.html, line 8)
[Log] 5: false (hoge.html, line 8)
[Log] 6: false (hoge.html, line 8)
[Log] 7: false (hoge.html, line 8)
[Log] 8: false (hoge.html, line 8)
[Log] 9: true (hoge.html, line 8)
[Log] 10: false (hoge.html, line 8)
[Log] 11: false (hoge.html, line 8)
[Log] 12: false (hoge.html, line 8)
[Log] 13: false (hoge.html, line 8)
[Log] 14: false (hoge.html, line 8)
[Log] 15: false (hoge.html, line 8)
[Log] 16: false (hoge.html, line 8)
[Log] 17: false (hoge.html, line 8)
[Log] 18: false (hoge.html, line 8)
[Log] 19: false (hoge.html, line 8)

valueに入らないだけで値としてはもてる

<html>
    <input id="t" type="text" value="">
    <script>
        C = String.fromCharCode(0x1d);
        t = document.getElementById('t');
        t.value = "first" + C + "second";
        console.log("first" + C + "second");
        console.log(t.value);
    </script>
</html>

Chrome (Mac)

hoge.html:7 firstsecond
hoge.html:8 firstsecond

Firefox (Mac)

firstsecond hoge.html:7:9
firstsecond hoge.html:8:9

Safari (Mac)

[Log] firstsecond (hoge.html, line 7)
[Log] first (hoge.html, line 8)

なんで後ろのやつも消えてしまうん

こめんと

ではAppleは死刑ということで

こんかいの影響範囲

jQuery$el.val()
 ↓
selectize.jsのgetValue

今回は文字と文字のデリミタを\tにしても問題なかったので良かった。