KonquerorとJavaScriptLinuxのブラウザであるKonqueror(ユーザーシェア0.1%未満)には、JavaScriptに重大なバグがあり、Shift_JISのページでエスケープ文字の「\」(バックスラッシュ)が利用されていると、エスケープ文字として解釈されないために、不具合が発生します。そのため、Konquerorのことを考えるのであれば、「\」が出現しないで済むように、ダブル・クォートとシングル・クォートをうまく使わなければなりません。(参照:Konquerorとエスケープ文字(JavaScript謎のエラーを解く))具体的には、 document.write("<font color=\"#ff0000\">あいうえお</font>"); と普通ならしたところを、敢えて、 document.write('<font color="#ff0000">あいうえお</font>'); とします。(document.writeしたい文字列の中にダブルクォートとシングルクォートの両方が存在する場合は、もっと複雑な書式になりますね。) 「document.write("****");」の形式に慣れている人(私も含めて。PHPやPerlを扱う人にとって、ダブルクォートとシングルクォートの違いは重要であり、特に理由がない限りは、文字列の出力の際にはダブルクォートを使われているのでは?と思います。)にとっては、「document.write('****');」の形式は違和感があるかもしれません。 そのため、注意を喚起するために、敢えて、こちらのメールアドレス変換プログラムでは、「LinuxのブラウザKonquerorのバグ対策を考慮する。」というチェックボックスを付けました。 このチェックボックスにチェックをつけない限りは、「ダブルクォート+エスケープ文字」で変換結果が出ますので、変換結果をShift_JISのページに貼り付けても、Konquerorでは動きません。(EUC-JPやUTF-8のページでは問題は発生しません。理由は、上述の「Konquerorとエスケープ文字(JavaScript謎のエラーを解く)」をご参照ください。) 最初から、Konqueror対策済みの結果(シングルクォート形式)1種類だけを表示することも考えましたが、ユーザーの皆様がシングルクォート形式であることに気付かずにカスタマイズするととんでもない結果になりかねないため、敢えて、このような方式を取りました。幸い、Konquerorのインターネット上のシェアは0.1%未満(千人に一人)ですので、「ダブルクォート+エスケープ文字」でもほとんど影響がないとも言えるかもしれません。JavaScriptをoffにしているユーザー(約2%から3.5%程度)の方がはるかに問題になってくることが多いでしょう。 JavaScriptをoffにしているユーザーには、<noscript>タグを利用して、 のようにする必要があります。 |