我在我正在工作的项目中使用Tinymce(使用jQuery);我们使用富文本编辑器供用户输入信息;但是,有时加载页面时Firefox和Chrome会检测到“未定义的错误”错误(有时在代码的不同行),而其他时候页面加载就好了。奇怪的是,它与IE完美配合。
以下是我正在使用的一些代码:
view.find('textarea.rich-text').each(function () {
$(this).tinymce( /* ...rules... */);
});
后来
_variable.find("#summary").tinymce().setContent(content);
此行是错误(有时)被捕获的地方。在我看来,问题是一个加载问题,即使tinyMCE插件在此行之前初始化约5000行。
更新:目前我已经设法通过setTimeout“解决”问题,但这似乎是一种非常难看的方式。
答案 0 :(得分:6)
几点:
您没有提到TinyMCE初始化是否在jQuery ready
事件函数中完成。当然应该是这样。
您不需要每个循环。你可以说:
$('textarea.rich-text').tinymce({
script_url : '../js/tinymce/jscripts/tiny_mce/tiny_mce.js',
theme : "advanced",
...
});
find
,因为您只是按ID选择。只是做: $("#summary").tinymce().setContent(content);
script_url
加载脚本。这可能需要一段时间。因此,您必须使用回调,例如oninit。答案 1 :(得分:0)
如果您无法控制TinyMCE的init方法,则可以按照此解决方案进行操作。
jQuery(document).ready(function($) {
function myCustomSetContent( id, content ) {
// Check if TinyMCE is defined or not.
if( typeof tinymce != "undefined" ) {
var editor = tinymce.get( id );
// Check if TinyMCE is initialized properly or not.
if( editor && editor instanceof tinymce.Editor ) {
editor.setContent( text );
editor.save( { no_events: true } );
} else {
// Fallback
// If TinyMCE is not initialized then directly set the value in textarea.
//TinyMCE will take up this value when it gets initialized.
jQuery( '#'+id ).val( text );
}
return true;
}
return false;
}
function myCustomGetContent( id ) {
// Check if TinyMCE is defined or not.
if( typeof tinymce != "undefined" ) {
var editor = tinymce.get( id );
// Check if TinyMCE is initialized properly or not.
if( editor && editor instanceof tinymce.Editor ) {
return editor.getContent();
} else {
// Fallback
// If TinyMCE is not initialized then directly set the value in textarea.
// TinyMCE will take up this value when it gets initialized.
return jQuery( '#'+id ).val();
}
}
return '';
}
$(".class-to-update-content").on("click", function(e) {
myCustomSetContent( "tinymce-editor-id", "New Content in Editor" );
});
$(".class-to-get-content").on("click", function(e) {
$("div.class-to-display-content").html( myCustomGetContent( "tinymce-editor-id" ) );
});
});
参考:http://blog.incognitech.in/tinymce-undefined-issue/
编辑:包含解决方案