123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- ///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,
- options = me.options,
- currentHeight,
- timer;
- function adjustHeight() {
- var me = this;
- clearTimeout(timer);
- if(isFullscreen)return;
- timer = setTimeout(function () {
- if (me.queryCommandState && 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,Math.max(options.minFrameHeight, options.initialFrameHeight));
- if (currentHeight != lastHeight) {
- me.setHeight(currentHeight);
- lastHeight = currentHeight;
- }
- domUtils.remove(tmpNode);
- }
- }, 50);
- }
- var isFullscreen;
- me.addListener('fullscreenchanged',function(cmd,f){
- isFullscreen = f
- });
- me.addListener('destroy', function () {
- me.removeListener('contentchange', adjustHeight);
- me.removeListener('afterinserthtml',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('afterinserthtml',adjustHeight)
- me.addListener('keyup', adjustHeight);
- me.addListener('mouseup', adjustHeight);
- //ff不给事件算得不对
- setTimeout(function () {
- adjustHeight.call(this);
- }, 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.call(this);
- }, 100);
- });
- });
- };
|