| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- ///import core
- ///commands 当输入内容超过编辑器高度时,编辑器自动增高
- ///commandsName AutoHeight,autoHeightEnabled
- ///commandsTitle 自动增高
- /**
- * @description 自动伸展
- * @author zhanyi
- */
- UE.plugins['autoheight'] = function () {
- var me = this;
- //提供开关,就算加载也可以关闭
- me.autoHeightEnabled = me.options.autoHeightEnabled !== false ;
- if (!me.autoHeightEnabled)return;
- var bakOverflow,
- span, tmpNode,
- lastHeight = 0,
- currentHeight,
- timer;
- function adjustHeight() {
- clearTimeout(timer);
- timer = setTimeout(function () {
- if (me.queryCommandState('source') != 1) {
- if (!span) {
- span = me.document.createElement('span');
- //trace:1764
- span.style.cssText = 'display:block;width:0;margin:0;padding:0;border:0;clear:both;';
- span.innerHTML = '.';
- }
- tmpNode = span.cloneNode(true);
- me.body.appendChild(tmpNode);
- currentHeight = Math.max(domUtils.getXY(tmpNode).y + tmpNode.offsetHeight, me.options.minFrameHeight);
- if (currentHeight != lastHeight) {
- me.setHeight(currentHeight);
- lastHeight = currentHeight;
- }
- domUtils.remove(tmpNode);
- }
- }, 50)
- }
- me.addListener('destroy', function () {
- me.removeListener('contentchange', adjustHeight);
- me.removeListener('keyup', adjustHeight);
- me.removeListener('mouseup', adjustHeight);
- });
- me.enableAutoHeight = function () {
- if(!me.autoHeightEnabled)return;
- var doc = me.document;
- me.autoHeightEnabled = true;
- bakOverflow = doc.body.style.overflowY;
- doc.body.style.overflowY = 'hidden';
- me.addListener('contentchange', adjustHeight);
- me.addListener('keyup', adjustHeight);
- me.addListener('mouseup', adjustHeight);
- //ff不给事件算得不对
- setTimeout(function () {
- adjustHeight();
- }, browser.gecko ? 100 : 0);
- me.fireEvent('autoheightchanged', me.autoHeightEnabled);
- };
- me.disableAutoHeight = function () {
- me.body.style.overflowY = bakOverflow || '';
- me.removeListener('contentchange', adjustHeight);
- me.removeListener('keyup', adjustHeight);
- me.removeListener('mouseup', adjustHeight);
- me.autoHeightEnabled = false;
- me.fireEvent('autoheightchanged', me.autoHeightEnabled);
- };
- me.addListener('ready', function () {
- me.enableAutoHeight();
- //trace:1764
- var timer;
- domUtils.on(browser.ie ? me.body : me.document,browser.webkit ? 'dragover' : 'drop',function(){
- clearTimeout(timer);
- timer = setTimeout(function(){
- adjustHeight()
- },100)
- });
- });
- };
|