次の問題が発生する理由を理解するのに苦労しています。
入力ボックスがあり、オートコンプリートボックスを添付したいと思います。
function input_set_autocomplete_to(obj)
{
if( obj.type != "text" ) { return; }
if( obj.getAttribute("rel") != "autocomplete" ) { return; }
obj.setAttribute("autocomplete", "off");
obj.setAttribute("uniqindex", Math.round(Math.random()*99999));
obj.onfocus = function() {
input_hide_autocompletes();
};
これが関数の始まりです。ここでは問題ありません。次に、onkeydownイベントとonkeyupイベントをフックして、ユーザーが入力しているときにボックスを表示できるようにします。
obj.onkeydown = function(e) {
console.log('x');
}
obj.onkeyup = function (e) {
console.log('z');
}
ここまでは順調ですね。すべてがWindowsとLinuxの両方のすべてのブラウザ(IE、FF、Chrome、Safari)で機能し、キリル文字入力を使用している場合はLinuxのOperaを除いて、すべてのキーを押すとx、zが表示されます(例:сдфг)。onkeyupイベントは発生しません。
私が使用しているシステムは、Opera10.10を搭載したUbuntu9.04です。
PSこの質問を入力している間、ArchLinuxを搭載した別のマシンで、Opera 10.10を使用して試してみましたが、正常に動作しています。また、同僚は、Safariを搭載したMacOS X 10.6でも機能しないというメモを落としましたが、バージョンを特定するために彼に連絡することはできません。