<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<style type="text/css">
</style>
</head>
<body>
<iframe id="ifr1" width="300px" height="200px"></iframe>
<input type="button" value="focus" id="btn1"/>
<script>
window.onload=function(){
ifr = document.getElementById(‘ifr1‘);
doc = ifr.contentWindow.document;
//alert(doc);
doc.designMode = ‘on‘;
doc.open();
doc.write(‘<html><head></head><body></body></html>‘);
doc.close();
var btn1 = document.getElementById(‘btn1‘);
btn1.onclick = function(){
console.log(‘click‘);
doc.body.focus(); //兼容 chrome IE
//这个并不会触发body.focus而是会触发ifr.contentDocument.defaultView.onfocus
ifr.contentDocument.defaultView.focus();//兼容FF chrome
//如果有了这个上面的就不起作用了。
};
doc.body.onfocus = function(){ //直接使用会报错,ie下只有body结束所以
//doc.write(‘<html><head></head><body></body></html>‘);
console.log(‘doc.body.onfocus‘);
}
doc.body.onblur = function(){
console.log(‘doc.body.onblur‘);
}
//
ifr.contentDocument.defaultView.onfocus = function(){
console.log(‘contentDocument.defaultView.onfocus‘);
}
ifr.contentDocument.defaultView.onblur = function(){
console.log(‘contentDocument.defaultView.onblur‘);
}
}
/*
* 总结如下
* 获得焦点
if(ff){
ifr.contentDocument.defaultView.focus();
}else{
doc.body.focus();
}
* 总结如下
* 焦点事件
if(ie){
doc.body.onfocus = function(){
console.log(‘doc.body.onfocus‘);
}
}else{
ifr.contentDocument.defaultView.onfocus = function(){
console.log(‘contentDocument.defaultView.onfocus‘);
}
}
*/
</script>
</body>
</html>
如果Jquery
$(ifr.contentDocument.defaultView).focus();
会触发两个
doc.body.onfocus 和 contentDocument.defaultView.onfocus;
慎用。。。。。
原文:http://my.oschina.net/122612475/blog/289568