2012-04-03 7 views
0

UPDATE RGB: das Problem ist mit FF .cloneNode() -Methode: http://jsfiddle.net/beCVL/1/FireFox und IE konvertieren ursprüngliche Farbwerte

Ich weiß, IE und FF intern Farbe in RGB konvertieren, das Problem verursacht, weil der Farbwert don nicht übereinstimmen, was auf dem Server ist.

Beweis:

Chrome 18: 
CKEDITOR.instances.selected_text_actual.getData() 
>> "s <span style="color: #ff0000">text</span>" 

FireFox 11: 
CKEDITOR.instances.selected_text_actual.getData() 
>> "s <span style="color: rgb(255, 0, 0);">text</span>" 

So, wie ich das Problem lösen will, ist CKEditor Datenprozessor immer verwenden, um die RGB-Werte zu machen. Gibt es eine Möglichkeit, das zu tun?

fand ich, dass so etwas wie dies funktionieren sollte:

CKEDITOR.on('instanceReady', function(ev){ 
      var editor = ev.editor, 
       dataProcessor = editor.dataProcessor, 
       htmlFilter = dataProcessor && dataProcessor.htmlFilter; 

      // HTML 4 way to end tags 
      dataProcessor.writer.selfClosingEnd = '>'; 

      htmlFilter.addRules({ 
       elements:{ 
        $:function(element){ 
         var e = jQuery(element); 
         e.css("color", e.css("color")); // jquery auto converts to rgb 
        } 
       } 
      }); 

     }); 

Quelle: http://sebduggan.com/blog/customising-ckeditor-settings-in-mura/ aber, gibt es keine Änderung.

Die Umwandlung in RGB ist ziemlich geradlinig:

a.attr("style", "color: #444") 
[ 
<div style=​"color:​ #444">​</div>​ 
] 
a.css("color", a.css("color")); 
[ 
<div style=​"color:​ rgb(68, 68, 68)​;​ ">​</div>​ 
] 

EDIT: Das Problem mit FF .cloneNode ist() Methode: http://jsfiddle.net/beCVL/1/

+1

Was meinen Sie mit "die Farbwerte stimmen nicht mit dem überein, was auf dem Server ist"? String weise? Denn 'rgb (255, 0, 0)' ist genau '# ff0000'. – Bojangles

+0

das ist nicht genau. Eins ist in Hex, das andere ist RGB. Ich denke, ich bin sehr wörtlich, aber .. idk. = \ – NullVoxPopuli

+0

Beziehen Sie sich auf die Farbe, die jede Notation erzeugt, oder auf die eigentliche Notation selbst? – Bojangles

Antwort

0

Wenn Sie zwei Farbwerte vergleichen wollen, dass jeder sein kann Auf verschiedene Arten dargestellt, müssen Sie sicherstellen, dass beide in eine kanonische Form (zB die exakt gleiche Form) umgewandelt werden.

So können Sie rgb(x,y,z) als kanonische Form verwenden, wenn Sie wollen, aber Sie werden dafür sorgen, dass alle Farbwerte als #xyz ausgedrückt oder #xxyyzz werden zunächst vor dem Vergleich mit der RGB-Form umgewandelt.

Hier ist eine Funktion, die alle zu rgb(x,y,z) ohne Leerzeichen drei Werte von Farben konvertiert und vergleicht sie dann und kehrt zu Ihnen das Ergebnis:

function colorsAreSame(c1, c2) { 
    var space = /\s+/g; 

    function makeRGB(c) { 
     var r, g, b; 
     c = c.replace(space, ""); 
     if (c.charAt(0) == "#") { 
      if (c.length == 4) { 
       r = parseInt(c.charAt(1), 16); 
       r = (r * 16) + r; 
       g = parseInt(c.charAt(2), 16); 
       g = (g * 16) + g; 
       b = parseInt(c.charAt(3), 16); 
       b = (b * 16) + b; 
      } else if (c.length == 7) { 
       r = parseInt(c.substr(1, 2), 16); 
       g = parseInt(c.substr(3, 2), 16); 
       b = parseInt(c.substr(5, 2), 16); 
      } 
      return "rgb(" + r + "," + g + "," + b + ")"; 
     } else { 
      return(c); 
     } 
    } 
    c1 = makeRGB(c1); 
    c2 = makeRGB(c2); 
    return(c1 == c2); 
} 
1

Wie ich in http://cksource.com/forums/viewtopic.php?f=11&t=25141 Sie antwortete Sie das Original verwenden können " Ausgabe HTML "Beispiel, das den vollständigen Code enthält, der in dem Blog, den Sie verknüpft haben, kopiert wurde und die Funktion" convertRGBToHex "verwendet.

Und BTW, Firefox respektiert die Stile, der einzige Browser, der derzeit diesen Teil ändert, ist IE.

+0

Aber warum gibt der CKeditor in FF etwas anderes als der CKeditor in Chrome zurück? – NullVoxPopuli

+0

Für mich geben sie das gleiche zurück. Ich weiß nicht, wie Sie Ihre Tests durchführen. Mein Test ist: Gehen Sie zu http://backeditor.com/demo, löschen Sie den Inhalt und geben Sie hallo ein. wähle alle aus und wende eine Farbe an, wechsle zur Quelle.Ich bekomme diese:

Hallo

AlfonsoML

+0

das ist, wie ich bin immer den Text: \t \t var yourEditor = CKEDITOR.instances.selected_text_actual; \t \t var formatiertDataForWysiWyg = yourEditor.dataProcessor.toHtml (yourEditor.getData()); \t \t var temp_sel = yourEditor.dataProcessor.toDataFormat (formatierteDatenForWysiWyg); – NullVoxPopuli

0

Die Tatsache, dass das Klonen eines Knotens ändert das Stil-Attribut ist fast sicher ein bug in Gecko, aber in der Zwischenzeit element.style.color wird rgb(255, 0, 0) in beiden Fällen zurückgeben.

Verwandte Themen