Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2011, 23:55
Новичок на форуме
Отправить личное сообщение для Amro Посмотреть профиль Найти все сообщения от Amro
 
Регистрация: 04.12.2011
Сообщений: 1

Вставка в 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 к нему дописывать? Если не сложно направьте на путь истинный...

Последний раз редактировалось Amro, 04.12.2011 в 23:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новый WYSIWYG редактор, идеи, предложения, советы Logo Общие вопросы Javascript 4 27.05.2011 03:24
Передача кода HTML Владимир Седов Общие вопросы Javascript 2 12.04.2011 16:48
Генератор Html кода Grindel Общие вопросы Javascript 0 08.10.2010 20:06
Вставка данных в textarea из модального окна (для Markitup) Roman Koff jQuery 0 26.08.2010 23:21
WYSIWYG редактор текста HTML страницы на javascript Дмитри Чижиков Ваши сайты и скрипты 4 14.09.2009 17:05