diff --git a/src/examples/english/ckeditor/plugins/jqueryspellchecker/plugin.js b/src/examples/english/ckeditor/plugins/jqueryspellchecker/plugin.js index f2afe7d..d952806 100644 --- a/src/examples/english/ckeditor/plugins/jqueryspellchecker/plugin.js +++ b/src/examples/english/ckeditor/plugins/jqueryspellchecker/plugin.js @@ -106,24 +106,35 @@ CKEDITOR.plugins.add('jqueryspellchecker', { var t = this; + var win = $(window); + return function() { - var ed = t.editor; - var word = (this.wordElement.data('firstElement') || this.wordElement)[0]; - - var p1 = $(ed.container.$).find('iframe').offset(); - var p2 = $(ed.container.$).offset(); - var p3 = $(word).offset(); - - var left = p3.left + p2.left; - var top = p3.top + p2.top + (p1.top - p2.top) + word.offsetHeight; - - top -= $(t.editorWindow).scrollTop(); - + var ed = t.editor; + var word = (this.wordElement.data('firstElement') || this.wordElement)[0]; + var element = this.wordElement.data('firstElement') || this.wordElement; + var offset = element.offset(); + var boxOffset = this.config.suggestBox.offset; + var containerHeight = this.container.outerHeight(); + + var p1 = $(ed.container.$).find('iframe').offset(); + var p2 = $(ed.container.$).offset(); + var p3 = $(word).offset(); + + var left = p3.left + p2.left; + var top = p3.top + p2.top + (p1.top - p2.top) + word.offsetHeight; + var positionAbove = p1.top + ( p3.top - $(ed.container.$).find('iframe').contents().find("html,body").scrollTop() ) - containerHeight; + + top -= $(t.editorWindow).scrollTop(); + + if (win.height() + win.scrollTop() < top + containerHeight) { + top = positionAbove; + } + this.container.css({ top: top, left: left }); }; } -}); \ No newline at end of file +});