2010-10-04 134 views
0

我遇到一些跨瀏覽器的怪事來了,而試圖ExtJS的HTML編輯整合到我們的項目:HTML編輯,增加/減小字體大小與麥達斯命令

如果減少/增加Firefox3.6的字體大小,它將選定的文本包裹在具有size屬性的''標籤中(例如'visitor')。如果您在Chrome6或Safari4中執行相同的操作,則會將其封裝到帶有'style = font-size ...'屬性(例如'visitor')的''標記中。因此,一旦您在Firefox中更改字體大小,您將無法在Safari或Chrome中修改它,反之亦然。

這是通過瀏覽器的Midas引擎完成的(如此處所述:http://www.mozilla.org/editor/midas-spec.html)。該實現調用:

document.execCommand('FontSize', false, value); // value is the font size as a numeric value

所以,沒有太多我可以一下改變。我正在編寫我自己的字體大小更改器的實現,但是在我走下這條路徑後,我意識到這將是一個相當複雜的實現。

有其他人遇到過這個問題嗎?這個有什麼好的解決方案嗎?

回答

0

只要你將源碼保存在某個服務器的某個地方,我想推薦離開編輯器。

在服務器端,您通常會驗證源,因此驗證將是將源代碼轉換爲獨特樣式的好時機。

+0

我寧願不在後端做它。對我來說,這是一個前端功能。另外,在前端,我們對所有clob字段使用相同的RichTextEditor組件。我只需要修復一個組件。而在後端,我們有不同的驗證器在這些字段周圍有不同的業務邏輯,這些都需要改變,並且有更多潛在的失敗點。後端的改變將與我自己的前端解決方案一樣複雜。 – Johannes 2010-10-04 22:05:34

+0

如果我不得不在客戶端,我會把節點(documentElement如果你使用iframe或者editor-element,如果你使用contenteditable-element)並且用getElementsByTagName()獲取所有的font-element。我會用span/div替換它們,並根據例如span/div設置span/div的樣式。 font-element的size-attribute(注意font的size-attribute不使用像素)。還有一個命令「styleWithCss」,但我猜這在IE中不被接受。 – 2010-10-04 23:01:15

+0

我剛試過styleWithCss。這並沒有改變Firefox的行爲。我會繼續嘗試你的其他建議。 – Johannes 2010-10-05 16:25:40