我在网页上有大约7 textarea
个,所有这些都是使用TinyMCE的富文本编辑器。但是在页面加载时,只有其中一个是可见的,其余的都是隐藏的。用户可以单击“显示”链接,该链接将逐个显示剩余的textareas。
然而,我有一个奇怪的问题。所有textarea
都设置如下:
<textarea cols="40" rows="20"></textarea>
但是,只有页面加载时显示的textarea
是我想要的完整尺寸。当我展示它们时,其余的textarea
非常小。所以我想也许它们不会被渲染,因为它们隐藏在页面加载上。
我该如何解决这个问题?
答案 0 :(得分:7)
尝试将一些CSS添加到隐藏的textareas中。
例如,使用
<textarea cols="40" rows="20" style="width: 40em; height: 20em"></textarea>
我想我遇到了这个问题,TinyMCE的CSS会覆盖一些默认的CSS行为。我最终不得不“重新覆盖”它,并最终编辑了TinyMCE的CSS页面。
答案 1 :(得分:6)
我认为这是一个MCE错误,或者至少是MCE缺乏的一个功能。
因为我想在CSS中设置输入框的样式,而不是HTML(yuck)我尝试了
visibility: hidden;
而不是
display: none;
一切都恢复了。
我相信后者导致元素不占用空间,这会占用MCE代码,该代码会检测元素的宽度和高度。
答案 2 :(得分:2)
使用jQuery加载TinyMCE时,可以解决这个问题:
1-在您的textarea上,在内联样式属性中指定高度:
<textarea style="height:200px;" class="tinymce" name="myfield"></textarea>
2-在实例化TinyMCE编辑器时添加回调函数。例如的 tinymceLoaded 强>
$('textarea.tinymce').tinymce({
// Location of TinyMCE script
script_url : 'PATH_TO_TINYMCE.js',
// General options ...
// Theme options...
// callback function
init_instance_callback : "tinymceLoaded"
});
3-在tinymceLoaded函数中设置编辑器的高度:
function tinymceLoaded(inst){
// get the desired height of the editor
var height = $('#' + inst.editorId).height();
// when the editor is hidden, the height calculated is 0
// Lets use the inline style text to solve this problem
if(height == 0){
height = $('#' + inst.editorId).css('height'); // 200px
height = height.replace(/[^0-9]/g, ""); // remove all non-numeric characters to isolate the '200'
}
// set the height of the hidden TinyMCE editor
$('#' + inst.editorId + '_ifr').css({height: height + 'px'});
}
答案 3 :(得分:1)
如果没有关于实际设置的更多细节以及如何进行有趣的显示/隐藏功能,很难给出明确的答案。 我可以提出一些一般性的想法:
答案 4 :(得分:1)
来自TinyMCE inside hidden div are not displayed as enabled when we put the div visible,用户的slolife回答帮助了我:
在取消隐藏包含div后,尝试调用tinyMCE.init(...)。
答案 5 :(得分:1)
我一直有同样的问题,隐藏的textarea控件转换为TinyMCE编辑器的高度太小。将visibility
设置为none
会有效,但会留下一个很大的空白区域。
以下解决方案对我有用:
tinyMCE.init({ ... init_instance_callback : "onInstanceInit" });
onInstanceInit
函数中,动态隐藏已初始化的TinyMCE编辑器答案 6 :(得分:1)
如果您使用TinyMCE的生产版本,您可能忘记复制tinymce.min.js需要的文件夹。您需要在与tinymce.min相同的文件夹中包含文件夹 langs ,插件,皮肤和主题。 js文件。
答案 7 :(得分:0)
隐藏的东西的另一个原因是你从dom中删除了元素,并在其上初始化了tinymce。你需要先从这个元素中删除tinymce,这样你就可以在初始化新的tinymce元素时避免奇怪的行为。
例如:
removeElementWithTinymce = function(elementToRemove){
var parent = elementToRemove.parentNode;
tinymce.remove(elementToRemove.getAttribute('id'));
parent.removeChild(elementToRemove);
};
就是这样。