elrte不适用于Internet Explorer 11(IE11)

时间:2013-12-03 09:20:30

标签: internet-explorer-11 elrte

elrte不适用于Internet Explorer 11(IE11)

18天前由Hank Valery添加

您好,

Microsoft正在部署带有Windows更新的IE11,因此我尝试了它如何与elrte一起使用。不幸的是,存在严重的问题。

当您开始输入时,文本将不包含在游标位置上。它出现在编辑器的开头,但似乎在格式化体之外。单击“编辑器”后,您将识别出输入的文本不可用。

是否有解决方案让IE再次与elrte合作? IE8-IE10中不存在此问题。

谢谢

3 个答案:

答案 0 :(得分:1)

很难确定;我根本不知道elRTC软件。

然而,the source code中的快速浏览显示它使用浏览器检测来切换某些功能在不同浏览器中的工作方式 - 特别是代码中有许多引用$.browser.msie ,这是jQuery浏览器检测属性。

这有两个原因:

  • 首先,不推荐使用jQuery浏览器检测功能:默认情况下,最新版本的jQuery甚至不包含$.browser属性。可以通过使用jQuery迁移库来恢复它,但不是理想的;它被弃用是有原因的,所以从长远来看,依靠它并不是一个好的做法。 elRTE依赖于jQuery中不推荐使用的功能这一事实可能会在新的浏览器版本发布时为您的代码带来其他问题,并且还会使您更难升级到更新的jQuery版本。

  • 其次,IE11做了许多改动,打破了许多现有的浏览器检测脚本。我不确定$.browser.msie,但上面的段落意味着您可能使用的是在IE11存在之前发布的jQuery版本,这意味着它无法了解这些更改。

我的建议是做以下事情:

  1. 在github问题跟踪器上发布一张票据,以便erLTE向他们报告问题。还要检查可能已经报告过的其他票证。 github代码中可能还有一些更新尚未正式发布,可能会解决问题。

  2. 抓住latest version of jQuery(撰写本文时为v1.10.2),以及jQuery.migrate library。使用这些而不是您当前使用的任何版本。如果你很幸运,可能已经更新了最新版本的迁移库以正确检测IE11,如果你真的幸运,这可能会解决问题而无需进一步的工作。我无法保证,但值得一试。

  3. 您可能需要考虑的另一个选择是切换到替代工具。 CKEditor和TinyMCE目前似乎是此类型中最受欢迎的工具,但还有其他一些编辑器可用。你可能想尝试一下。

答案 1 :(得分:0)

您可以在编辑器页面上使用以下META-Tag来要求IE在IE 10中呈现页面:

<meta http-equiv="X-UA-Compatible" content="IE=10" />

答案 2 :(得分:0)

当您按下Enter键时,是否所有输入内容消失的症状?

这是急救,但我可以解决问题。

我试过&#34; elRTE 1.3&#34; ,&#34; elFinder 2.1_n&#34;

  • 升级jquery&amp; jquery UI 我升级了jquery 1.11.2 jquery.ui 1.10.1。 当你使用最新版本的bootstrap3和elFinder时,它可以更愉快。
  • 修改&#34; elrte.full.js&#34;

&#13;
&#13;
line 1:
  //<-- add start($.browser replica?)
  $.browser = { 
    msie: /Trident/i.test(navigator.userAgent) && !window.opera,
    msie11: /Trident/i.test(navigator.userAgent) && !/msie/i.test(navigator.userAgent) && !window.opera
  };
  //add end($.browser replica?)-->
line 1329?:
  .bind('keydown', function(e) {
line 1335?:
  ......
    if (self.dom.selfOrParent(n, /^PRE$/)) {
      self.selection.insertNode(self.doc.createTextNode("\r\n"));
      return false;
    } else if ($.browser.safari && e.shiftKey) {
      self.selection.insertNode(self.doc.createElement('br'));
      return false;
    }
    //<--add start(for IE11)
    else if( $.browser.msie11){
      self.selection.insertNode(self.doc.createElement('br'));
      return true;
    }
    //add end(for IE11) -->
  }
&#13;
&#13;
&#13;

example.html的

&#13;
&#13;
...
  <!-- jQuery 1.11.2 UI 1.10.1 -->
  <script type="text/javascript" src="../js/jquery-1.11.2.js"></script>
  <script src="../js/jquery-ui-1.10.1.custom.min.js" type="text/javascript" charset="utf-8"></script>
  <link rel="stylesheet" href="../css/ui-themes/smoothness/jquery-ui-1.10.1.custom.css" type="text/css" media="screen" title="no title" charset="utf-8">

  <!-- elRTE 1.3 -->
  <script src="../js/el/js/elrte.full.js" type="text/javascript" charset="utf-8"></script>
  <link rel="stylesheet" href="../js/el/css/elrte.min.css" type="text/css" media="screen" charset="utf-8">

  <!-- elFinder 2.1_n -->
  <link rel="stylesheet" type="text/css" href="../js/el/css/elfinder.min.css">
  <link rel="stylesheet" type="text/css" href="../js/el/css/theme.css">
  <script src="../js/el/js/elfinder.min.js"></script>

  <script type="text/javascript" charset="utf-8">
    $(function() {
      $('.wysiwyg').elrte({
        height   : 450,
        toolbar  : 'complete',
        cssfiles : ['css/elrte-inner.css'],
        fmOpen : function(callback) {
          $('<div/>').dialogelfinder({
            url : './el/connector.php',
            commandsOptions: {
              getfile : {
                oncomplete : 'close',
                onlyURL : true
              }
            },
            getFileCallback :callback
          });
        }
      });
    });
  </script>
  ...
&#13;
&#13;
&#13;