<textarea>
的宽度由CSS类定义,例如:wMax
或wDefault
。在第一种情况下,它是100%,在第二种情况下,可以说200px。默认情况下,TinyMCE将所有内容转换为固定宽度,以像素为单当然,我可以在width:100%
内设置tinyMCE.init()
,但这不会涵盖带有wDefault / fixed的textarea。
我需要TinyMCE宽度与原始,%或px的行为相同,具体取决于它的CSS类。
如果我可以在tinyMCE.init()
过程中找到对原始textarea元素的引用,那么我可以从中读取CSS类,并设置width: (textarea.hasClass('wMax') ? '100%' : null)
或类似的东西
我知道getElement()函数,它正是我的textarea。但是我从哪里开始运行呢? tiny init()
中的tinyMCE.activeEditor null 。
我目前仍在使用TinyMCE 3,但如果你能为4.x版本回答这个问题会很好,如果有任何不同的话......
答案 0 :(得分:2)
自己找到解决方案。共享。
在标题中回答我自己的问题:直接在init()过程中引用textarea是不可能的,因为它不会为每个tinyMCE实例运行。它只运行一次。 但是:TinyMCE有一个可自定义的设置功能,它可以为每个实例运行,并具有解决上述问题所需的所有引用。
使用以下代码:
tinyMCE.init({
// ... your settings here ...
setup: function(ed){
if(ed.getElement().hasClass('wMax')){
ed.settings.width = '100%';
}
}
});
任何具有CSS类'wMax'(替换为您自己的)的textarea将被具有100%宽度的TinyMCE实例替换。所有其他都将具有固定宽度,等于初始化时textarea的宽度。您可以使用任何宽度扩展此方法,例如wHalf width:50%等。
注意:.hasClass()
函数是Mootools JS库的一部分。如果您使用其他库,请替换为另一个。
答案 1 :(得分:0)
我不知道这是否会引导你走向正确的方向。我使用此代码调整iframe高度以适合输入的内容。您可以调整一下以根据需要调整其高度和宽度(您需要通过$('#' + ed.id)
onInit获取textarea。
这是功能。基本上它会明确更改编辑器iframe的样式属性
resizeIframe: function(frameid) {
var frameid = frameid ? frameid : this.editor.id+'_ifr';
var currentfr=document.getElementById(frameid);
if (currentfr && !window.opera){
currentfr.style.display="block";
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) { //ns6 syntax
currentfr.height = currentfr.contentDocument.body.offsetHeight + 26;
}
else if (currentfr.Document && currentfr.Document.body.scrollHeight) { //ie5+ syntax
currentfr.height = currentfr.Document.body.scrollHeight;
}
styles = currentfr.getAttribute('style').split(';');
for (var i=0; i<styles.length; i++) {
if ( styles[i].search('height:') ==1 ){
styles.splice(i,1);
break;
}
};
currentfr.setAttribute('style', styles.join(';'));
}
},