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

  最近用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>

 

 

posted @ 2012-03-28 17:29  秋风无叶  阅读(408)  评论(0编辑  收藏  举报