2012-03-05 136 views
3

我一直堅持這幾個小時,會喜歡一些幫助。我使用tinyMCEsyntaxhl插件,使用syntaxhighlighter 2.1.382。tinyMCE setContent不能使用語法突出顯示的代碼

一切工作與非突出顯示的代碼很好。但是,使用突出顯示的代碼使用setContent時,我沒有快樂。我希望在這裏我看不到有什麼明顯的東西。

$(window).load(function() { 
    tinyMCE.activeEditor.setContent('<p>here is some code:</p> 
    <pre class="brush: jscript;fontsize: 100; first-line: 1; ">var fs = require("fs"); 

    module.exports = function(app, service){ 
     fs.readdir(__dirname + "/controllers", function(err, files){ 
      if (err) throw err; 
      files.forEach(function(file){ 
       var name = file.replace(".js", ""); 
       require("./controllers/" + name)(app, service); 
      }); 
     }); 
    };</pre>'); 
}); 

但是,這是行不通的。我試圖調試javascript,但是我遇到了麻煩(至少在chrome開發工具中)。

沒有錯誤信息,只是沒有填充內容。我已經嘗試使用{format:'raw'},正如tinyMCE文檔中所建議的那樣,但沒有運氣。

我希望有人試圖做到這一點,並取得成功。

+0

一個簡單的問題 - 你試圖使用你的問題的例子,或者它只是一個抽象的例子? JS不像你寫他們的方式支持多行字符串。 – Cheery 2012-03-05 03:09:49

+0

只是一個例子。但是,它應該可以是pre標籤內的任何代碼。 – 2012-03-05 08:25:55

回答

1

不幸的是,我從來沒有得到上面的代碼工作。我認爲<pre>標籤必須在瀏覽器中接管並搞砸了。另外,我還有點懷疑是因爲換行符造成傷害。然而,在閱讀了有關extended_valid_elements,valid_elements和valid_children的所有文檔,並且以多種方式配置tinyMCE init之後,@Thariama得到了一些幫助,這很好,但我無法實現這一點。

但是,我的確找到了解決方案。事實證明,如果我設置<textarea>直接與編碼 HTML(所以<pre>標記變成&lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;),那麼它工作正常。由於這個工作正常,並且在tinyMCE初始化後切斷了setContent,這對我很有用。

語法高亮顯示正常。我在搜索周圍時遇到this link是否有其他人想要這樣做。

+0

yepp,這將工作,因爲您輸入的文字被視爲實體+1 – Thariama 2012-03-06 11:19:51

1

我不知道高亮插件,但我想它插入一個特殊的樣式表到編輯器iframes頭。這導致特殊的html標籤a.s.o .. 的樣式(突出顯示)在這種情況下,內容不受影響/更改。

您將無法獲取突出顯示的內容,因爲它使用此插件查找。

+0

感謝您的迴應。對不起,我不太明白。我認爲我可以在任何有效的html上執行'setContent'?我並沒有試圖讓編輯工作。我正在嘗試'setContent'編輯器以前生成的一些html。你看到上面的代碼有問題嗎? – 2012-03-05 10:28:28

+0

可能會有一個使用默認設置valid_elements和valid_children的probl3em。檢查tinymce文檔以獲取有關如何調整此設置的更多信息。 – Thariama 2012-03-05 10:32:34

+0

謝謝。我會檢查他們。我現在確定了所有默認設置。 – 2012-03-05 10:33:53