2014-04-15 41 views
1

我想在頁面加載時在CKEditor中顯示一些tet。 如果我使用下面的代碼來設置CKEditor的默認數據,它工作正常。將值設置爲CKEditor之前

InnerLessonContent:<textarea name="editinnerlesson_content" id="editinnerlesson_innerlesson_content"></textarea> 

<script src="{{ asset('js/ckeditor/ckeditor.js') }}" type="text/javascript"></script> 
    <script> 
        // Replace the <textarea id="editor1"> with a CKEditor 
        // instance, using default configuration. 
        CKEDITOR.replace('editinnerlesson_innerlesson_content'); 
        CKEDITOR.instances['editinnerlesson_innerlesson_content'].setData('<p>This is the editor data.</p>'); 
    </script> 
    <br><br> 

但是當我使用下面的代碼,將不再顯示CKEditor的。

<script> 
       // Replace the <textarea id="editor1"> with a CKEditor 
       // instance, using default configuration. 
       CKEDITOR.replace('editinnerlesson_innerlesson_content'); 
       CKEDITOR.instances['editinnerlesson_innerlesson_content'].setData("{{ contents[0].content|raw }}"); 
</script> 

代碼中的錯誤是什麼?如何糾正它?

+0

您是否嘗試過調用'.setData('{{contents [0] .content | raw}}');'。你的引號可能會制動你的javascript。你能告訴我們渲染的輸出嗎? – kekub

+0

@kekub CKEditor仍未顯示。錯誤「Uncaught SyntaxError:Unexpected token ILLEGAL」 – Lumiere

+1

您能否顯示呈現的輸出? – kekub

回答

1

您可以直接在textarea中轉儲小枝變量,而不是在CKEDITOR.instances命令中。所以嘗試類似

<textarea name="editinnerlesson_content" id="editinnerlesson_innerlesson_content"> 
    {{ contents[0].content|raw }} 
</textarea> 
0

再次看看你的截圖後,錯誤是顯而易見的。

您的數據中有換行符。在JavaScript中這些是不允許的。例如,刪除它們或將它們替換爲字符串「\ n」。

// this is allowed 
var foo = "foo bar"; 

// this is allowed: 
var foo = "foo\nbar"; 

// this is not allowed: 
var foo = "foo 
bar"; 

我原來下面的回答:


三個想法:

1:有您的數據或粘貼一些非打印字符打破。請參閱No visible cause for "Unexpected token ILLEGAL" - 請注意,這些字符可能不在數據中!特別是如果您複製任何東西(我意外複製了UTF BOM符號時遇到此問題)。爲了克服和測試這個問題,請查看十六進制編輯器中的代碼和數據和/或手動重寫(從代碼開始,這很容易)。如果你複製粘貼,他們可以很容易地在我已經把管道的地方:

CKEDITOR.replace('editinnerlesson_innerlesson_content');| 
| CKEDITOR.instances['editinnerlesson_innerlesson_content'].setData(| |"|...|...|"| |);| 

2:它不象賈瓦德在我會建議直接將數據轉儲到textarea的意見,它可能會幫助必須是一個有效的JS字符串。

3:我沒有錯CKEDITOR.replace()是一個異步函數,編輯器還沒有準備好。我會嘗試這樣的事:

<script> 
    CKEDITOR.replace('editinnerlesson_innerlesson_content'); 
    CKEDITOR.on('instanceReady', function(ev) { 
     ev.editor.setData("<p>Confound these ponies!</p>"); // Replace with your data 
    }); 
</script> 

如果這樣的作品(未經測試的代碼),但與你的數據像以前一樣,你需要檢查網站資料是由文字格式的字符。這將有助於在沒有屏幕抓取的情況下查看完整呈現的內容,但可以作爲實際數據。

相關問題