2010-10-24 71 views
2

如果我嘗試在我的Firefox的頁面上嘗試execCommand("justifycenter"...這一段,它就不起作用;它給了我這個瘋狂的錯誤:execCommand justifycenter

uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: editor.php?id=new :: onclick :: line 1" data: no]

我已經知道原因;這是因爲我的身體標記沒有可信度,這是令人討厭的,因爲其他瀏覽器不需要這樣做。

現在,我的問題是我不希望整個頁面是可編輯的。我正在寫一些所見即所得的頁面構建器,並且將整個編輯器粘貼到iframe中是一種妥協。有誰知道任何其他的選擇?這整個execCommand是我的新東西,併爲它的身體啓用,但禁用它的一切似乎是一個非常糟糕的黑客攻擊。

回答

2

喜歡的東西:

function myExecCommand(aCommandName, aShowDefaultUI, aValueArgument) { 
    document.contentEditable = true; 
    document.execCommand(aCommandName, aShowDefaultUI, aValueArgument); 
    document.contentEditable = false; 
} 

應該工作,也可根據MDC可以討論的元素上設置CONTENTEDITABLE,而不是身體的,它應該工作。

注意:我確信3個參數在FireFox是強制性的。

+0

哦,我,我是個白癡。爲什麼我沒有想到這樣一個明顯的解決方案?謝謝。 – Jordan 2010-10-24 09:00:37

+0

不要懲罰自己,在處理更復雜的代碼時,我經常忽略最簡單的解決方案。我敢打賭,大多數人都這麼做;) – BGerrissen 2010-10-24 09:01:39

+0

請注意,contenteditable僅在3.0版本中使用Firefox,因此Firefox 2或更早版本無法使用。你可以在''和''off''上使用'document.designMode ='來代替,它可以在Firefox 1.0以前的版本中使用。 – 2010-10-24 09:41:08

0

我最近也遇到了這個問題,我確信這是Firefox中的一個錯誤(https://bugzilla.mozilla.org/show_bug.cgi?id=442186)。該解決方法包含在後面的討論中,雖然有點難看。