1

问题

的宽度<textarea>由 CSS 类定义,例如:wMaxwDefault. 在第一种情况下它是 100%,在第二种情况下,假设是 200px。默认情况下,TinyMCE 将所有内容转换为以像素为单位的固定宽度。当然我可以width:100%在里面设置tinyMCE.init(),但这不会覆盖带有 wDefault / 固定的 textarea。

我需要的

我需要 TinyMCE 宽度的行为与原始、% 或 px 相同,具体取决于它的 CSS 类。

如果我可以在过程中找到对原始 textarea 元素的引用tinyMCE.init(),那么我可以从中读取 CSS 类,并设置width: (textarea.hasClass('wMax') ? '100%' : null)或类似的东西

我知道getElement()函数,它让我得到了那个 textarea。但是我从哪里运行它?tinyMCE.activeEditor在. _init()

我目前仍在使用 TinyMCE 3,但是如果您也可以为 4.x 版本回答这个问题,如果当然有任何区别,那就太好了……

4

2 回答 2

2

自己找到了解决方案。分享。

在标题中回答我自己的问题:不可能直接在 init() 过程中引用 textarea,因为它不会为每个 tinyMCE 实例运行。它只运行一次。但是:TinyMCE 有一个可定制的设置功能,它确实适用于每个实例,并且具有解决上述问题所需的所有参考。

使用以下代码:

tinyMCE.init({
    // ... your settings here ...
    setup: function(ed){
        if(ed.getElement().hasClass('wMax')){
            ed.settings.width = '100%';
        }
    }
});

任何具有 CSS 类 'wMax' 的文本区域(替换为您自己的)都将替换为具有 100% 宽度的 TinyMCE 实例。所有其他的将有一个固定的宽度,等于初始化时文本区域的宽度。您可以使用任何宽度扩展此方法,例如 wHalf width:50% 等。

注意:.hasClass()函数是 Mootools JS 库的一部分。如果您使用不同的库,请替换为另一个。

于 2013-08-01T18:09:48.400 回答
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(';'));
        }
    },
于 2013-08-01T07:45:50.787 回答