Firefox Iframe 编辑器光标问题

  今天做在线编辑器,发现如果在Firefox中使用document.open打开页面,docment.write一些内容或者写入的内容为空时,点击编辑器竟然获取不到光标。document.body.focus()也不能将光标置入iframe编辑器内容,但是ie下却没有这个问题。我x。

测试代码如下
+展开
-HTML
<iframe id="ed" name="ed"></iframe>
<script type="text/javascript">
window.onload=function(){
  var win=document.getElementById('ed').contentWindow,doc=win.document;
  doc.designMode='On';
  //如果取消注释的话,firefox下获取焦点的竟然是跟节点HTML,而不是BODY节点。
   //而且点击没有内容的行,光标位置也不会出现在11的前后或者中间。
  //必须要点击11那行才能获取到光标位置
  /*doc.open();
  doc.writeln("11");
  doc.close();*/

  doc.body.focus();
  if(!document.all){
    var sel=win.getSelection();
    alert(sel.focusNode.tagName)
  }
}
</script> 
 
如下图所示

Firefox下document.body.focus无法获取光标

IE下document.body.focus可以获取到光标

 
所以在初始化的时候如果没有内容,在ff下还是不要document.write内容。
+展开
-HTML
<iframe id="ed" name="ed"></iframe>
<script type="text/javascript">
window.onload=function(){
  var win=document.getElementById('ed').contentWindow,doc=win.document;
  doc.designMode='On';
  //如果取消注释的话,firefox下获取焦点的竟然是跟节点HTML,而不是BODY节点。
   //而且点击没有内容的行,光标位置也不会出现在11的前后或者中间。
  //必须要点击11那行才能获取到光标位置
  var v='';
  if(v||document.all){//判断下是否有内容或者为ie时才write内容
    doc.open();
    doc.writeln(v);
    doc.close();
  }

  doc.body.focus();
  if(!document.all){
    var sel=win.getSelection();
    alert(sel.focusNode.tagName)
  }
}
</script> 
 

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:Firefox Iframe 编辑器光标问题

评论(1)Web开发网
阅读(130)喜欢(0)JavaScript/Ajax开发技巧