55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | /******************************************************************************* | |||
|  | * 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; | |||
|  | 
 | |||
|  | 	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); | |||
|  | 		self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	function init() { | |||
|  | 		minHeight = K.removeUnit(self.height); | |||
|  | 
 | |||
|  | 		self.edit.afterChange(resetHeight); | |||
|  | 		hideScroll(); | |||
|  | 		resetHeight(); | |||
|  | 	} | |||
|  | 
 | |||
|  | 	if (self.isCreated) { | |||
|  | 		init(); | |||
|  | 	} else { | |||
|  | 		self.afterCreate(init); | |||
|  | 	} | |||
|  | }); | |||
|  | 
 | |||
|  | /* | |||
|  | * 如何实现真正的自动高度? | |||
|  | * 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 | |||
|  | * 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 | |||
|  | * 由此就实现了真正的自动高度 | |||
|  | * 测试:chrome、firefox、IE9、IE8 | |||
|  | * */ |