CKEditor instanceReady не работает в Eclipse Nebula

Я пытаюсь использовать встроенный CKEditor через Eclipse Nebula в элементе управления SWT. Он использует CKEditor через встроенный движок браузера в Eclipse RCP. Элемент управления пытается инициализировать CKEditor в текстовой области Simple HTML на HTML-странице с помощью startupFocus CKDior, который не вызывается. Работает не стабильно, на одной машине работает, на другой нет. Ниже приведен фрагмент кода из класса Nebula, пожалуйста, укажите мне правильное направление, почему он не всегда работает. Заранее спасибо.

CKEDITOR.replace( 'editor', 
                		{
                			startupFocus : true,
                			on: {
                				'instanceReady' 	: function(event) { 
	                				//maximize the editor after the editor instance is ready
                					maximizeEditorHeight(); 
                					
                					event.editor.on('resize', function(resizeEvent) { 
										if ((prevHeight == null) || prevHeight != resizeEvent.editor.container.$.clientHeight) {
											prevHeight = CKEDITOR.instances.editor.container.$.clientHeight;
											
											if (!mouseDown) {
												// if the resize is trigger by an external event, 
												// e.g. toolbar expand/collapse
												maximizeEditorHeight();
											}
											
											if (resizeCallbackEnabled) {
												resizeParentContainer();
											}
										}
										else if (prevHeight == CKEDITOR.instances.editor.container.$.clientHeight) {
											prevHeight = null;
										}
									});
                				},
                				//notify the FocusListener
                				'focus'				: function() { focusIn(); },
                				'blur'				: function() { focusOut(); },
                				//notify the ModifyListener
                				'change' 			: function() { textModified(); },
                				//ensure the key pressed event is fired if Enter is pressed
                				'key'				: function(event) { event.data.preventDefault(false); },
                				//notify the KeyListener
                				'contentDom'		: function() {
                				    this.document.on('keydown', function(evt) {
                				    	if (evt.data.$.ctrlKey && evt.data.getKey() == 70) {
                				    		//prevent opening of browser find dialog on CTRL + F
                				    		evt.data.preventDefault(false);
                				    		//open the ckeditor find and replace dialog
                				    		CKEDITOR.instances.editor.execCommand('find')
                				    	}
                				    	else if (evt.data.$.ctrlKey && evt.data.getKey() == 72) {
                				    		evt.data.preventDefault(false);
                				    		//open the ckeditor find and replace dialog
                				    		CKEDITOR.instances.editor.execCommand('replace')
                				    	}
                				    	
                				        keyPressed(evt.data.getKey(), evt.data.getKeystroke());
                				    });
                				    this.document.on('keyup', function(evt) {
                				        keyReleased(evt.data.getKey(), evt.data.getKeystroke());
                				    });
                				}
                			}
                		});


person ctangudu    schedule 03.03.2016    source источник
comment
Я не могу ответить на этот вопрос без дополнительной информации. работает на одной машине, но не на другой, это неспецифично. Что не работает? В чем разница между двумя машинами/средами? Он не работает в вашем приложении или при запуске из IDE? Какую IDE вы используете? Какая среда (Win/Linux/Mac)? Обычно это проблема браузера, так как startupFocus — это функция ckeditor. Таким образом, вы также можете попробовать проверить, работает ли ckeditor на другой машине в целом.   -  person Dirk Fauth    schedule 03.03.2016
comment
Приносим извинения за недостающую информацию. Обе машины имеют Win7, Eclipse 3.5, добавлено управление в Eclipse RCP, работающем из Eclipse. Обе машины имеют одинаковую версию IE и настройки, похоже, одинаковы. startupFocus предназначен только для установки фокуса в элементе управления. Даже если мы удалим эту часть, CHKEDITOR.replace завершится ошибкой с отображением только textArea. До сих пор не могу понять, что происходит не так.   -  person ctangudu    schedule 03.03.2016
comment
Эклипс 3.5? Тебе нужна хотя бы Луна   -  person Dirk Fauth    schedule 03.03.2016
comment
Хотел бы я сделать это на этом, но наша целевая среда в продакшене по-прежнему на этом. Но он работает в машине.   -  person ctangudu    schedule 03.03.2016
comment
Тогда на одной машине не активирована целевая среда. Luna требуется из-за проблем с виджетом SWT Browser в предыдущих версиях.   -  person Dirk Fauth    schedule 03.03.2016
comment
Привет, обе машины имеют одинаковую целевую платформу. Опять же, что интересно, я попытался запустить тот же код в Eclipse Luna и получил ту же ошибку. Исправление к моему предыдущему заявлению: исходная среда работает на Eclipse 3.7 (а не на 3.5, как я уже говорил). Похоже, что-то еще мешает этому.   -  person ctangudu    schedule 07.03.2016
comment
Пакет Nebula RichText зависит от org.eclipse.swt;bundle-version=3.103.0. Это недоступно в версиях Eclipse до 4.4. Если у вас есть такая цель, как Eclipse 3.7, пакет org.eclipse.nebula.widgets.richtext даже не должен запускаться. Если это так, ваша цель сломана. Если у вас есть эта версия SWT в вашей среде выполнения, это может быть только браузер, который отличается.   -  person Dirk Fauth    schedule 07.03.2016
comment
Спасибо за ваш вклад, вы правы. Он работает после обновления до 4.4 (с правильной целевой платформой). Но я пытаюсь заставить его работать в файле jar, а не в каталоге. как вы думаете, это сработает?   -  person ctangudu    schedule 24.03.2016
comment
Чтобы закрыть исходную проблему/обсуждение, HTML-код не работал в браузере до Eclipse 4.4, потому что старый браузер по какой-то причине не мог анализировать комментарии, добавленные на HTML-страницу. Зато отлично работает в Eclipse 4.4+. Еще раз спасибо за отличный виджет, это действительно полезно.   -  person ctangudu    schedule 05.05.2016


Ответы (1)


Нет, потому что шаблоны HTML ссылаются на библиотеки js, и я не смог найти способ указать эти ссылки в банке. Если у вас есть идея решить эту проблему, не стесняйтесь вносить свой вклад.

person Dirk Fauth    schedule 24.03.2016