2013-07-31 119 views
1

问题

<textarea>的宽度由CSS类定义内orignial textarea的引用,例:wMaxwDefault。在第一种情况下,它是100%,在第二种情况下,可以说200px。默认情况下,TinyMCE将所有东西都转换为固定宽度(像素)。当然,我可以在tinyMCE.init()的内部设置width:100%,但这不会覆盖texDerea的wDefault/fixed with。TinyMCE的:获取初始化

我需要什么

我需要TinyMCE的宽度有同样的表现作为原始,或%取决于它的CSS类像素。

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

的东西我知道getElement()功能,这让我正是那个textarea。但我从哪里运行? tinyMCE.activeEditor是nullinit()

我目前还在使用TinyMCE的3,但它会很好,如果你能回答这也为4.x的版本,如果有任何区别ofcourse ...

回答

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的实例代替。所有其他的将有一个固定的宽度,等于初始化时textarea的宽度。您可以使用任意宽度来扩展此方法,例如wHalf宽度:50%等。

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

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(';')); 
     } 
    }, 
+0

Thariama,感谢您分享您的代码。不过,我不认为我会实施这种解决方法,因为它的大小,浏览器依赖性和方法。说到解决方法,更稳定的解决方法是将编辑器包装到DIV中并将CSS应用于其中。 –

+0

你不能将tinymce编辑器包装到另一个元素中,因为tinycme使用自己的iframe(使用自己的css) – Thariama

+0

我一直包装它,在div的表格单元格等中。只需设置tinyMCE宽度:100%,它将适合任何块级元素。 –