123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- ///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,
- lastHeight = 0,
- options = me.options,
- currentHeight,
- timer;
- function adjustHeight() {
- var me = this;
- clearTimeout(timer);
- if(isFullscreen)return;
- if (!me.queryCommandState || me.queryCommandState && me.queryCommandState('source') != 1) {
- timer = setTimeout(function(){
- var node = me.body.lastChild;
- while(node && node.nodeType != 1){
- node = node.previousSibling;
- }
- if(node && node.nodeType == 1){
- node.style.clear = 'both';
- currentHeight = Math.max(domUtils.getXY(node).y + node.offsetHeight + 25 ,Math.max(options.minFrameHeight, options.initialFrameHeight)) ;
- if (currentHeight != lastHeight) {
- if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) {
- me.iframe.parentNode.style.height = currentHeight + 'px';
- }
- me.body.style.height = currentHeight + 'px';
- lastHeight = currentHeight;
- }
- domUtils.removeStyle(node,'clear');
- }
- },50)
- }
- }
- var isFullscreen;
- me.addListener('fullscreenchanged',function(cmd,f){
- isFullscreen = f
- });
- me.addListener('destroy', function () {
- me.removeListener('contentchange afterinserthtml keyup mouseup',adjustHeight)
- });
- me.enableAutoHeight = function () {
- var me = this;
- if (!me.autoHeightEnabled) {
- return;
- }
- var doc = me.document;
- me.autoHeightEnabled = true;
- bakOverflow = doc.body.style.overflowY;
- doc.body.style.overflowY = 'hidden';
- me.addListener('contentchange afterinserthtml keyup mouseup',adjustHeight);
- //ff不给事件算得不对
- setTimeout(function () {
- adjustHeight.call(me);
- }, 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.on('setHeight',function(){
- me.disableAutoHeight()
- });
- 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 () {
- //trace:3681
- adjustHeight.call(me);
- }, 100);
- });
- //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题
- var lastScrollY;
- window.onscroll = function(){
- if(lastScrollY === null){
- lastScrollY = this.scrollY
- }else if(this.scrollY == 0 && lastScrollY != 0){
- me.window.scrollTo(0,0);
- lastScrollY = null;
- }
- }
- });
- };
|