elrte 不适用于 Internet Explorer 11 (IE11(
由 Hank Valery 添加 18天前
你好
Microsoft正在部署带有Windows更新的IE11,所以我尝试了它如何与elrte一起工作。不幸的是,存在严重的问题。
开始键入时,文本不会包含在光标位置上。它出现在编辑器的开头,但似乎在格式正文之外。单击"编辑器"后,您将识别输入的文本不可用。
有没有让IE再次与elrte一起工作的解决方案?此问题在 IE8-IE10 中不存在。
谢谢
很难确定;我根本不知道elRTC软件。
然而,在源代码中快速浏览一下就会发现它使用浏览器检测来切换某些功能在不同浏览器中的工作方式 - 特别是代码中有许多引用$.browser.msie
,这是jQuery浏览器检测属性。
这是有问题的,原因有两个:
-
首先,不推荐使用 jQuery 浏览器检测功能:最新版本的 jQuery 默认情况下甚至不包含
$.browser
属性。可以使用 jQuery migrate 库将其取回,但并不理想;它被弃用是有原因的,所以从长远来看,依赖它并不是真正的好做法。elRTE 依赖于 jQuery 中已弃用的功能这一事实可能会在发布新的浏览器版本时为您的代码带来其他问题,并且还会使您更难升级到较新的 jQuery 版本。 -
其次,IE11 进行了许多更改,这些更改破坏了许多现有的浏览器检测脚本。我不确定
$.browser.msie
,但上面的段落意味着您可能使用的是在IE11存在之前发布的jQuery版本,这意味着它无法知道这些更改。
我的建议是执行以下操作:
-
在 github 问题跟踪器上发布票证,以便 erLTE 向他们报告问题。还要检查可能已经报告的其他票证。github代码中可能还有一些更新尚未进入正式版本,这可能会解决这个问题。
-
获取最新版本的jQuery(撰写本文时的v1.10.2(,以及jQuery.migrate 库。使用它们而不是您当前使用的任何版本。如果幸运的话,最新版本的迁移库可能已更新以正确检测IE11,如果幸运的话,这可能会解决问题,而无需任何进一步的工作。我不能保证,但值得一试。
-
您可能需要考虑的另一个选择是切换到替代工具。CKEditor和TinyMCE似乎是目前这种类型的最流行的工具,但还有很多其他编辑器可用。您可能想尝试一下。
您可以在编辑器页面上使用以下 META-Tag 来要求 IE 像在 IE 10 中一样呈现页面:
<meta http-equiv="X-UA-Compatible" content="IE=10" />
当您按 Enter 键时,所有输入内容的症状是否消失?
这是急救,但我可以解决问题。
我尝试了"elRTE 1.3","elFinder 2.1_n"。
- 升级 jquery & jquery UI我升级了jquery 1.11.2 jquery.ui 1.10.1。当您使用最新版本的bootstrap3和elFinder时,它将能够更愉快。
- 修改"elrte.full.js">
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("rn"));
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) -->
}
示例.html
...
<!-- 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>
...