<!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;
慎用。。。。。
时间: 2024-12-17 17:17:35