Вставка в jQuery WYSIWYG редактор HTML кода из Popup окна
Начал прикручивать вот этот http://www.samclarke.com/sceditor/example/example.php редактор (SCEditor) к своему проекту. Редактор неплохой, написан на jquery поддерживает WYSIWYG BBCode режим, как раз то что мне нужно.
Столкнулся со следующей проблемой: Мне необходимо из Popup окна в визивиг ифрайм окно этого редактора вставлять картинки и ссылки на файлы. В самом Popup окне как можно догадаться я подгружаю данные из файлового архива моей CMS-ки. Т.е. из родительского окна, где инициализирован данный редактор, я жмакаю ссылку, открывается Popup окно, где я выбираю картинку и при клике на неё или на ссылку она должна вставляеться в родительское окно в WYSIWYG, в позицию курсора. Набросал пример http://dym.su/sceditor/ За вставку HTML в редакторе отвечает функция: base.wysiwygEditorInsertHtml = function (html, endHtml) { base.focus(); // don't apply to code elements if($(getWysiwygSelectedContainerNode()).is('code') || $(getWysiwygSelectedContainerNode()).parents('code').length !== 0) return; if(typeof endHtml !== "undefined") html = html + base.getWysiwygSelectedHtml() + endHtml; if (getWysiwygDoc().getSelection) { var range = getWysiwygSelection(); var htmlNode = getWysiwygDoc().createElement('div'); htmlNode.innerHTML = html; // A better way of inserting the HTML would be to use documentFragments // however you then need to find the last inserted node to setStartAfter htmlNode = htmlNode.children[0]; range.deleteContents(); range.insertNode(htmlNode); range = range.cloneRange(); // move the cursor to the end of the insertion if(htmlNode.parentNode !== range.startContainer || !$.browser.opera) range.setStartAfter(htmlNode); else // this is only needed for opera { return; //range.setStart(htmlNode.parentNode, range.startOffset+1); //range.setEnd(htmlNode.parentNode, range.endOffset+1); } // change current range wysiwygEditor.contentWindow.getSelection().removeAllRanges(); wysiwygEditor.contentWindow.getSelection().addRange(range); } else if (getWysiwygDoc().selection && getWysiwygDoc().selection.createRange) getWysiwygDoc().selection.createRange().pasteHTML(html); else base.execCommand("insertHtml", html); lastRange = null; }; но она вшита в объект и как до нее достучаться из вне я ума не представляю, понимаю, что без window.opener здесь не обойтись, но как добраться до этой функции, не инициализировав заново редактор я не знаю :( Может есть какой способ? или нужно своебразное API к нему дописывать? Если не сложно направьте на путь истинный... |
Часовой пояс GMT +3, время: 18:52. |