在IE9或边缘上使用Richefaces默认编辑器的问题

时间:2014-07-22 13:59:51

标签: jsf tinymce internet-explorer-9 richfaces

当用户使用Internet Explorer 9时,Richfaces版本3.3.1.GA的默认编辑器(TinyMCE)出现问题。我在这里和互联网上阅读过许多喜欢使用X-UA兼容的人元数据降级IE版本,但是,我不喜欢它。我总是喜欢使用边缘版本,因为我也使用CSS 3。 另一个解决方案是RichFaces的升级,但是我没有考虑过我的应用程序是一个非常遗产的可能性。

1 个答案:

答案 0 :(得分:0)

然后我开始解压缩RichFacesUI jar并从以下位置更改文件 META-INF / resources-config.xml

 <resource>
   <name>scripts/tiny_mce/tiny_mce.js</name>
   <path>org/richfaces/renderkit/html/scripts/tiny_mce/tiny_mce.js</path>
   <renderer class="org.ajax4jsf.resource.ScriptRenderer"/>
 </resource>

为:

 <resource>
   <name>scripts/tiny_mce/tiny_mce.js</name>
   <path>org/richfaces/renderkit/html/scripts/tiny_mce/tiny_mce_src.js</path>
   <renderer class="org.ajax4jsf.resource.ScriptRenderer"/>
 </resource>

这是为了简化脚本调试。没有它,这将是相当困难的。

首先出现这些问题是因为Richfaces对旧IE使用特定语句,因此我推出以下代码以了解IE的执行版本:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

PS:这个聪明的代码来自James Padolsey,我在此question找到了它。

然后我运行了我的应用程序并且它在哪里破坏了我将最近的IE if语句更改为以下示例:

之前:

if (isIE) {

然后它变成了:

if (ie < 9) {

当它是负面陈述时:

if (!isIE) {

然后它变成了:

if (!isIE || ie > 8) {

唯一的区别在于getXML函数,如:

if (!i || !i.createDocument) {

然后我改为:

if (!i || !i.createDocument || ie > 8) {

In this Gist是我所做的所有更改。我希望它可以帮助任何有这个问题的人。

如果你想我在以下链接上推出我更改过的罐子:

对不起我的英语错误,我们鼓励你重写并修复这篇文章。