2014-04-15 19 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> 

如果这样的作品(未经测试的代码),但与你的数据像以前一样,你需要检查网站资料是由文字格式的字符。这将有助于在没有屏幕抓取的情况下查看完整呈现的内容,但可以作为实际数据。

相关问题