Uncaught Ошибка: не удалось найти элемент управления по типу: панель - PullRequest
0 голосов
/ 26 июня 2018

Я начал внедрять TinyMCE 4.7.13 самостоятельно, как предложено в официальных документах https://www.tinymce.com/docs/get-started/advanced-install/#sdkinstall в моем приложении Wicket 7. К сожалению, это не работает.

Когда я открываю страницу, содержащую текстовую область, в консоли браузера появляется следующее исключение:

Uncaught Error: Could not find control by type: panel
    at Object.create (tinymce-ver-1529929753311.js:26273)
    at renderIframeUI (theme.js:746)
    at Object.self.renderUI (theme.js:865)
    at renderFromLoadedTheme (tinymce-ver-1529929753311.js:24363)
    at renderThemeUi (tinymce-ver-1529929753311.js:24411)
    at Object.init$2 [as init] (tinymce-ver-1529929753311.js:24428)
    at Editor.<anonymous> (tinymce-ver-1529929753311.js:24514)
    at Array.<anonymous> (tinymce-ver-1529929753311.js:7373)
    at each$1 (tinymce-ver-1529929753311.js:2317)
    at loadScripts (tinymce-ver-1529929753311.js:7370)

My TinyMCEPage.html

<textarea wicket:id="text" id="mytextarea"></textarea>
<script>
    tinymce.init({
        selector: '#mytextarea'
    });
</script>

My TinyMCEPage.java

@MountPath("tinymce")
public class TinyMCEPage extends WebPage {

    @Override
    protected void onInitialize() {
        super.onInitialize();
        TextArea textArea = new TextArea<>("text", new Model<>("Test Content"));
        add(textArea);
    }

    @Override
    public void renderHead(IHeaderResponse response) {
        response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(getClass(), "tinymce.js")));
    }
}

tinymce.js взят из пакета разработчика.

1 Ответ

0 голосов
/ 26 июня 2018

Возможно, ваш скрипт выполняется слишком рано - попробуйте поместить ваш init-скрипт в OnDomReadyHeaderItem:

@Override
public void renderHead(IHeaderResponse response) {
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(getClass(), "tinymce.js")));

    response.render(OnDomReadyHeaderItem.forScript(
        String.format("tinymce.init({selector: '#mytextarea'});", textArea.getMarkupId());
    ));
}

Смотрите возможное решение здесь: https://github.com/wicketstuff/core/blob/master/tinymce4-parent/tinymce4/src/main/java/wicket/contrib/tinymce4/TinyMceBehavior.java

...