簡體   English   中英

IE9或Edge上Richefaces默認編輯器的問題

[英]Problems with Richefaces default editor on IE9 or edge

當用戶使用Internet Explorer 9時,我遇到了Richfaces版本3.3.1.GA的默認編輯器(TinyMCE)的問題。在這里和Internet上,我讀過很多人都喜歡使用X-UA兼容的元數據來降級。 IE版本,但是,我不喜歡它。 我總是更喜歡使用邊緣版本,因為我也在使用CSS 3。 另一個解決方案是RichFaces的升級,但是由於我的應用程序是相當傳統的,所以我沒有考慮這種可能性。

然后,我開始解壓縮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 ,我在這里發現了這個問題

然后,我運行了我的應用程序,但在發生問題的地方,我將最接近的IE if語句更改為以下示例:

在此之前:

if (isIE) {

然后變成:

if (ie < 9) {

而當它是負面的聲明時,例如:

if (!isIE) {

然后變成:

if (!isIE || ie > 8) {

唯一的區別是getXML函數類似於:

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

然后我改為:

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

在這個要點中,我做了所有的更改。 我希望它可以幫助任何遇到此問題的人。

如果您願意,可以將我更改過的罐子放在以下鏈接上:

請,對不起我的英語錯誤,我們建議您重寫並修復此帖子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM