2015-03-24 2 views
0

Любые другие предложения?CKEditor Исходный код Режим Копия

При использовании копирования CKEditor из одного экземпляра в другой (с CTRL + C/V). Вы всегда получаете какой-то измененный исходный код. Даже при включенной расширенной фильтрации содержимого и разрешении нескольких плагинов и правил контента.

Проверить этот пример здесь (код 1):

<p>nubosys GmbH ist ein 
Infrastrukturanbieter und bietet für eine moderne Informations- und 
Kommunikationstechnologie (ICT) das ideale Umfeld.<p> 

CTRL + C/V в другом случае становится этим (код 2):

<p><span>nubosys</span> GmbH ist ein Infrastrukturanbieter und bietet 
für eine moderne <span>Informations</span>- 
und Kommunikationstechnologie (ICT) das ideale Umfeld.</p> 

Так что вы видите, что нет необходимости span теги вставлены

Когда я наблюдаю за буфером обмена, я вижу это (код 3):

original clipboard contents

Итак, вы видите, что CKEditor действительно прекращает работу, отфильтровывая вещи. Но это не на 100% то же самое, что и в оригинале.

Моим подходом было бы реализовать режим копирования на основе исходного кода. Поэтому мне интересно, не существует ли чего-то подобного для CKEditor. Моим вариантом использования является копирование из одного экземпляра в другой экземпляр редактора внутри CMS.

В случае, если вы хотите получить дополнительную справочную информацию. Вот CKEditor плагин для Orchard CMS мы начали: https://github.com/inteno/CustomCK/wiki/Introduction

Как заставить пользователя скопировать HTML код из одного экземпляра к другому (без изменения источника) с одним щелчком мыши или нажатием клавиши CTRL + C/V.

Когда я использую forcePasteAsPlainText: true, проблема не возникает, но форматирование теряется. Я хочу чистый способ скопировать форматирование без изменения источника.

Update:

В этой скрипке http://jsfiddle.net/mjost/6rgo0udg/15/ проблема не возникает. CKEditor удается отфильтровать плохой код:

Version:0.9 
StartHTML:0000000165 
EndHTML:0000000886 
StartFragment:0000000201 
EndFragment:0000000850 
SourceURL:http://fiddle.jshell.net/mjost/6rgo0udg/15/show/ 
<html> 
<body> 
<!--StartFragment--><p style="box-sizing: border-box; border-radius: 0px !important; margin: 0px 0px 10px; color: rgb(85, 85, 85); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.7999992370605px; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px;">nubosys GmbH ist ein Infrastrukturanbieter und bietet für eine moderne Informations- und Kommunikationstechnologie (ICT) das ideale Umfeld.</p><br class="Apple-interchange-newline"><!--EndFragment--> 
</body> 
</html> 

(http://freeclipboardviewer.com/)

Но это потому, что нет пролеты даже в буфер обмена.

Update 2:

Проблема возникает здесь, когда я работаю ни с кем неразрывные пробелы:

http://jsfiddle.net/mjost/r34c7fLe/5/

HTML

<body> 
     <textarea id="cke1"><p>nubosys GmbH wurde 2011 von inteno ag und&nbsp;edicomp&nbsp;GmbH&nbsp;gegr&uuml;ndet. nubosys GmbH ist ein Infrastrukturanbieter und bietet f&uuml;r eine moderne Informations- und Kommunikationstechnologie (ICT) das ideale Umfeld.</p> 
    </textarea> 

      <textarea id="cke2"></textarea> 
    </body> 

JS

CKEDITOR.replace('cke1', { 
    forcePasteAsPlainText: false, 
    extraAllowedContent: 'span;' 
}); 
CKEDITOR.replace('cke2', { 
    forcePasteAsPlainText: false, 
    extraAllowedContent: 'span;' 
}); 

ОБНОВЛЕНО Вопрос:

Согласно последним экспериментам я думаю, что это должно быть плагин, который перезаписывает по умолчанию Копировать & Вставить и работает на базе исходного кода. Это возможно?

+0

Использование браузера Chrome? – devqon

+0

А в других браузерах? – devqon

+0

Я тестировал в IE, Firefox и Chrome. И, похоже, эта проблема специфична для chrome/Webkit. Если я наблюдаю за буфером обмена с IE, HTML становится хуже. Но, к счастью, никаких дополнительных пролетов. Поэтому я действительно ищу копию источника 1: 1. все остальное всегда может вызвать появление новых тегов (особенно, когда они мне нужны в других случаях). – Matthias

ответ

1

Похоже, что существует некоторая несовместимость между CKEditor и Chrome/Webkit. Я не уверен, есть ли у вас какая-то конкретная причина для этого javascript. Но forcePasteAsPlainText: false избыточен, потому что это значение по умолчанию. И extraAllowedContent: 'span;' является причиной вашей проблемы с вставленными пролетами.

Если вам не нужно устанавливать дополнительные параметры, вы можете удалить все javascript и просто использовать class="ckeditor" на textareas для загрузки редакторов на них.

Другой способ заключается в хит Source кнопку на панели инструментов CKEditor и скопировать исходный текст непосредственно, то есть всегда 1: 1, то вы можете нажать Source кнопку на второй CKEditor и вставить его туда, снова 1: 1.

Неужели это все еще ошибка для вас в этой скрипке? http://jsfiddle.net/tfoaw743/1/

+0

К вашему первому предположению. Да, я знаю, что это просто для разъяснения, что я знаю об обстановке. extraAllowedContent - это то, что мне нужно. – Matthias

+0

Спасибо за подсказку с классом. Относительно вашего описания с исходным кодом. Я знаю это. Я думаю о плагине, который делает это автоматически. Как вы думаете. Так что обычные пользователи вынуждены копировать на основе исходного режима. – Matthias

+0

Нет, этого не происходит. Но это не решение для меня, так как я хочу разрешить прохождение в целом. – Matthias

Смежные вопросы