お手軽クロスブラウザ対応イベント処理関数
prototype.jsやMochiKitを使うまでもないんだけどお手軽にクロスブラウザ対応イベント処理がしたいというときに使うと便利。
var observeFunc = null; function observe(elem, eventType, listener, capture) { if (observeFunc == null) { if (elem.addEventListener) { observeFunc = function(_elem, _eventType, _listener, _capture) { _elem.addEventListener(_eventType, _listener, _capture); }; } else if (elem.attachEvent) { observeFunc = function(_elem, _eventType, _listener, _capture) { _elem.attachEvent('on' + _eventType, function() { _listener.call(_elem, window.event); }); }; } } if (observeFunc) { observeFunc(elem, eventType, listener, capture); } }
それを使って書いたのが以下のコード。
function attach_infield_annotation(field, default_value) { function show_default(field) { if (field.value == "") { field.value = default_value; } } function clear_default(field) { if (field.value == default_value) { field.value = ""; } } observe(field, 'blur', function(e) { show_default(this); }); observe(field, 'focus', function(e) { clear_default(this); }); observe(field.form, 'submit', function(e) { clear_default(field); }); show_default(field); }
参考:
- [JavaScript]addEventListenerを手軽に使おう[文系大学的IT系の悲哀]