CKEditor - Изменить источник изображения - PullRequest
7 голосов
/ 08 апреля 2011

Я сделал несколько пользовательских функций для CKEditor. Короче говоря, он показывает тег div с 5 ссылками, для малого, среднего, большого X-Large и исходного размера.

Когда я нажимаю на ссылки, атрибут SRC изображения изменяется на правильный размер.

Это работает, но не сохраняется обратно в редактор. Это как изображение, которое я получаю через цель события click, не является частью исходного кода.

Как изменить исходный код при работе с элементами в редакторе?

Мой код выглядит так:

$(target).ckeditor(function (editor) {
    $(this.document.$).bind("click", function (event) {
        var target = $(event.target);

        if (target.is("img")) {
            var p = $("<div contenteditable='false' class='image-properties'>" + Milkshake.Resources.Text.size + ": <a class='sizeLink' href='#size1Img'>S</a>&nbsp;<a class='sizeLink' href='#size2Img'>M</a>&nbsp;<a class='sizeLink' href='#size3Img'>L</a>&nbsp;<a class='sizeLink' href='#size4Img'>XL</a>&nbsp;<a class='sizeLink' href='#size5Img'>Org.</a></div>");
            p.css("top", target.position().top);

            var regex = new RegExp(/(size\d{1}img)/i);
            var match = regex.exec(target.attr("src"));

            if (match != null) {
                var imgSrize = match[0];
                p.find("a[href=#" + imgSrize + "]").addClass("selected");
            }

            p.delegate("a", "click", function (e) {
                var link = $(e.target);

                if (!link.is(".selected")) {
                    $(".selected", link.parent()).removeClass("selected");
                    link.addClass("selected");

                    var imageSrc = target.attr("src");
                    imageSrc = imageSrc.replace(/(size\d{1}img)/i, link.attr("href").substring(1));

                    target.attr("src", imageSrc);
                    target.css("width", "");
                    target.css("height", "");
                }

                e.preventDefault();
            });

            p.insertAfter(target);
        } else if (!target.is("div.image-properties")) {
            $("div.image-properties", target.parent()).remove();
        }
    });

1 Ответ

4 голосов
/ 10 апреля 2011

src изображений и href ссылок защищены в CKEditor, чтобы избежать ошибок браузера (при копировании, перетаскивании или иногда даже просто загрузке содержимого), поэтому вы должны обновить также этот пользовательский атрибут:

data-cke-saved-src

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...