autoheight.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*******************************************************************************
  2. * KindEditor - WYSIWYG HTML Editor for Internet
  3. * Copyright (C) 2006-2011 kindsoft.net
  4. *
  5. * @author Roddy <luolonghao@gmail.com>
  6. * @site http://www.kindsoft.net/
  7. * @licence http://www.kindsoft.net/license.php
  8. *******************************************************************************/
  9. KindEditor.plugin('autoheight', function(K) {
  10. var self = this;
  11. if (!self.autoHeightMode) {
  12. return;
  13. }
  14. var minHeight;
  15. function hideScroll() {
  16. var edit = self.edit;
  17. var body = edit.doc.body;
  18. edit.iframe[0].scroll = 'no';
  19. body.style.overflowY = 'hidden';
  20. }
  21. function resetHeight() {
  22. if(self.fullscreenMode){
  23. return;
  24. }
  25. var edit = self.edit;
  26. var body = edit.doc.body;
  27. edit.iframe.height(minHeight);
  28. self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight));
  29. }
  30. function init() {
  31. minHeight = K.removeUnit(self.height);
  32. self.edit.afterChange(resetHeight);
  33. if(!self.fullscreenMode){
  34. hideScroll();
  35. }
  36. resetHeight();
  37. }
  38. if (self.isCreated) {
  39. init();
  40. } else {
  41. self.afterCreate(init);
  42. }
  43. });
  44. /*
  45. * 如何实现真正的自动高度?
  46. * 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。
  47. * 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。
  48. * 由此就实现了真正的自动高度
  49. * 测试:chrome、firefox、IE9、IE8
  50. * */