|
|
/*******************************************************************************
|
|
|
* KindEditor - WYSIWYG HTML Editor for Internet
|
|
|
* Copyright (C) 2006-2011 kindsoft.net
|
|
|
*
|
|
|
* @author Roddy <luolonghao@gmail.com>
|
|
|
* @site http://www.kindsoft.net/
|
|
|
* @licence http://www.kindsoft.net/license.php
|
|
|
*******************************************************************************/
|
|
|
|
|
|
KindEditor.plugin('autoheight', function(K) {
|
|
|
var self = this;
|
|
|
//self.autoHeightMode = true;
|
|
|
if (!self.autoHeightMode) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
var minHeight;
|
|
|
|
|
|
function hideScroll() {
|
|
|
var edit = self.edit;
|
|
|
var body = edit.doc.body;
|
|
|
edit.iframe[0].scroll = 'no';
|
|
|
body.style.overflowY = 'hidden';
|
|
|
}
|
|
|
|
|
|
function resetHeight() {
|
|
|
var edit = self.edit;
|
|
|
var body = edit.doc.body;
|
|
|
edit.iframe.height(minHeight);
|
|
|
|
|
|
//最高418 超过用滚动条
|
|
|
self.resize(null, Math.max(
|
|
|
(K.IE ? body.scrollHeight : body.offsetHeight) > 385 ? 385+33 : (K.IE ? body.scrollHeight : body.offsetHeight)
|
|
|
+ 33, minHeight));
|
|
|
|
|
|
if( self.height == "418px" ){
|
|
|
edit.iframe[0].scroll = 'yes';
|
|
|
body.style.overflowY = 'auto';
|
|
|
}
|
|
|
else{
|
|
|
hideScroll();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function init() {
|
|
|
minHeight = K.removeUnit(self.height);
|
|
|
|
|
|
self.edit.afterChange(resetHeight);
|
|
|
hideScroll();
|
|
|
var edit = self.edit;
|
|
|
var body = edit.doc.body;
|
|
|
edit.iframe.height(minHeight);
|
|
|
self.resize(null, Math.max(
|
|
|
((K.IE ? body.scrollHeight : body.offsetHeight) > 250 ? 250 : (K.IE ? body.scrollHeight : body.offsetHeight)) //限制初始化太高的情况
|
|
|
+ 33, minHeight));
|
|
|
}
|
|
|
|
|
|
if (self.isCreated) {
|
|
|
init();
|
|
|
} else {
|
|
|
self.afterCreate(init);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
/*
|
|
|
* 如何实现真正的自动高度?
|
|
|
* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。
|
|
|
* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。
|
|
|
* 由此就实现了真正的自动高度
|
|
|
* 测试:chrome、firefox、IE9、IE8
|
|
|
* */
|