2009年12月7日

iモードブラウザ2.0 で form.element.type を変更できない

ぼくが携帯サイトで一番嫌いなのが、フォームのパスワード入力画面が伏せ字にならずに、パスワードが丸見えになるサイトです。

ソニエリやノキア、iPhoneなどの端末では入力中の文字だけは伏せ字にならず、パスワード入力で不便は感じないのですが、国内メーカーの古い機種では全桁伏せ字になってしまって、現在入力している文字を確認できません。それ故に、多くの携帯サイトでは、あえてパスワードを丸見えにさせてあります。

しかし、国内メーカーでも最近の機種ではパワスワード入力方法が見直され、海外方式(?)のものが増えてきました。NEC製端末でも、N-06Aでやっと改善されたようです。

そこで、「旧端末では全桁表示、iモードブラウザ2.0対応端末では伏せ字」ということを、JavaScriptを使って簡単に解決できるんじゃないかと思って試してみたのですが、思うようにいきません。

例えば、HTMLで「<input type="text" name="pass">」と記述しておいて、それを「<body onload="document.login.pass.type='password'">」のようにJavaScriptで変更しようとしても、なぜかできません。

次のようなコードで、「onload」以外にも「onsubmit」や「onfocus」で試しても結果は同じでした。

<html>
<head>
<title>pass</title>
</head>
<body onload="document.login.pass.value='onload';document.login.pass.type='password';">
<form name="login" action="javascript:void(0);" onsubmit="this.pass.value='onsubmit';this.pass.type='password';">
<input type="text" name="userid" value="ID" size="8" istyle="3">
<input type="text" name="pass" value="PASS" size="8" istyle="3" onfocus="this.value='onfocus';this.type='password';">
<input type="submit">
<input type="button" value="Type" onclick="form.userid.value=form.pass.type;">
</form>
</body>
</html>

ドコモの説明では「Read only=×」となっているので、書き換えもできるはずなのですが、取得しかできません。ちなみに「form.element.value」は読み書き可能です。

Safari(Webkit)では、CSSで「-webkit-text-security: disc;」のようにして伏せ字にすることができるので、iモードブラウザでも同様のCSSが使えればそれでも構わないのですが、ドコモの資料を読む限りそのような属性は無さそうです。

しかし、元はと言えば不親切な端末がそもそもの不満の原因なので、それらの端末が一刻も早く駆逐されるのを祈るばかりです。

0 件のコメント: