当用户使用Internet Explorer 9时,Richfaces版本3.3.1.GA的默认编辑器(TinyMCE)出现问题。我在这里和互联网上阅读过许多喜欢使用X-UA兼容的人元数据降级IE版本,但是,我不喜欢它。我总是喜欢使用边缘版本,因为我也使用CSS 3。 另一个解决方案是RichFaces的升级,但是我没有考虑过我的应用程序是一个非常遗产的可能性。
答案 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是我所做的所有更改。我希望它可以帮助任何有这个问题的人。
如果你想我在以下链接上推出我更改过的罐子:
对不起我的英语错误,我们鼓励你重写并修复这篇文章。