tinyMCE setContent не работает с выделенным синтаксисом кода - PullRequest
3 голосов
/ 05 марта 2012

Я застрял на этом в течение нескольких часов и хотел бы помочь.Я использую tinyMCE с плагином syntaxhl , использующим syntaxhighlighter 2.1.382.

Все отлично работает с невыделенным кодом.Однако при использовании setContent с выделенным кодом я не получаю радости.Я надеюсь, что здесь есть что-то очевидное, чего я не вижу.

<code>$(window).load(function() {
     tinyMCE.activeEditor.setContent('<p>here is some code:</p>
    <pre class="brush: jscript;fontsize: 100; first-line: 1; ">var fs = require("fs");

    module.exports = function(app, service){
        fs.readdir(__dirname + "/controllers", function(err, files){
            if (err) throw err;
            files.forEach(function(file){
                var name = file.replace(".js", "");
                require("./controllers/" + name)(app, service);
            });
        });
    };
');});

Однако это не работает.Я пытался отладить JavaScript, но у меня возникли проблемы (по крайней мере, с инструментами Chrome Dev).

Нет сообщения об ошибке, просто нет заполненного контента.Я пытался использовать {format: 'raw'}, как предложено в документах tinyMCE, но не повезло.

Я надеюсь, что кто-то другой попытался сделать это и преуспел.

Ответы [ 2 ]

1 голос
/ 06 марта 2012

К сожалению, я никогда не получал вышеуказанный код для работы. Я думаю, что тег <pre> должен занять место в браузере и испортить вещи. Кроме того, я немного сомневаюсь, что разрывы линий наносят вред. @Thariama была некоторой помощью, которая была отличной, однако, прочитав всю документацию по extended_valid_elements, valid_elements и valid_children и настроив инициацию tinyMCE многими способами, я не смог заставить это работать.

Однако я нашел решение для себя. Оказывается, если я установлю <textarea> напрямую с в кодировке html (т. Е. Тег <pre> станет &lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;), то он будет работать правильно. Так как это работает и избавляет от необходимости делать setContent после инициализации tinyMCE, это будет работать для меня.

Подсветка синтаксиса работает хорошо. Я наткнулся на эту ссылку , когда искал, не хочет ли кто-нибудь еще сделать то же самое.

1 голос
/ 05 марта 2012

Я не знаю плагин выделения, но я предполагаю, что он вставляет специальную таблицу стилей в заголовок iframes редактора. Это приводит к стилизации (выделению) специальных HTML-тегов a.s.o .. В этом случае содержимое не изменяется / не изменяется.

Вы не сможете получить выделенный контент, как он выглядит с этим плагином.

...