B~Vladi, на самом-то деле можно использовать
focus +
useCapture (впервые вижу, что это реально пригодилось
):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 0.18.1.1" />
<style type="text/css">
.content {
border: 1px solid green;
}
</style>
<script type="text/javascript">
function init() {
document.body.firstChild.addEventListener(
'focus',
function(e) {
var el = (e.target || e.srcElment),
v = el.value || el.innerText || el.textContent;
alert([e.type, v].join(' AND '));
},
true // important
);
}
</script>
</head>
<body onload="init()"><div class="content">
<p><input type="text" value="Input::Text" /></p>
<p><input type="button" value="Input::Button" /></p>
<p><button>Button</button></p>
<p><select>
<option value="1">first</option>
<option value="2">second</option>
</select></p>
<p><textarea>Textarea</textarea></p>
</div></body>
</html>
UPD Для Chrome + Safari нужен еще такой же бинд на
DOMActivate, поскольку у них focus на button (input:button) не срабатывает.