CodeMirror2 IE7 / IE8 下面未知运行时错误

时间:2022-11-17 11:11:29

  最近用CodeMirror2作后台的模板编辑器,在IE9、Firefox下面没有问题。到了IE7、IE8下面,textarea里面的代码就显示不出来了。搜索了好多,终于找到原因。
  原来出错的代码如下:

     < style ="margin-top:0;" >
         < asp:TextBox  ID ="txtContent"  runat ="server"  TextMode ="MultiLine"  Height ="450"  Width ="98%" ></ asp:TextBox >
     </ p >

 

  出错的原因应该是IE7、IE8中的P不支持innerHTML。CodeMirror的作者也发现了这个问题,相关链接:

  https://github.com/marijnh/CodeMirror2/issues/215

  https://github.com/marijnh/CodeMirror2/commit/4886415d6054571f92fa4d5601ebe7d601e952ab

 

     try { stringWidth("x"); }
     catch (e) {
       if (e.message.match(/runtime/i) || e.message.match(/运行时/i) )
        e =  new Error("A CodeMirror inside a P-style element does not work in Internet Explorer. (innerHTML bug)");
       throw e;
    }

 

  把textarea外层的p改成div,即可正常:

 

     < div  style ="margin-top:0;" >
         < asp:TextBox  ID ="txtContent"  runat ="server"  TextMode ="MultiLine"  Height ="450"  Width ="98%" ></ asp:TextBox >
     </ div >