Конфликт между встроенным редактированием и прогрессивным улучшением - PullRequest
1 голос
/ 18 ноября 2011

У меня есть веб-страница с прогрессивным улучшением - скрипт добавляет некоторое форматирование и элементы на страницу.

На странице также возможно встроенное редактирование.

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

Каким может быть чистый способ заставить встроенное редактирование и прогрессивное улучшение работать на одной странице?

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Когда вы начинаете встроенное редактирование, вы можете установить идентификатор элемента div, который делается contenteditable для определенного значения, и изменить селекторы в вашем сценарии прогрессивного расширения, чтобы не выбирать этот элемент div.(Если у вас есть более одного редактируемого div, вы можете установить имя их класса.)

0 голосов
/ 10 декабря 2011

Я фанат jQuery, поэтому отвечаю в jQuery.

<script>
    // before attaching your progressive enhancement
    // do this assuming this after your page loads
    $('selector-on-what-you-want-to-enhance').not('[contenteditable=true]').each(function(){
    // enhance away
    });
</script>
0 голосов
/ 04 декабря 2011

Вы сказали, что ваш скрипт прогрессивного улучшения добавляет разметку, чтобы выделить фрагменты важного содержимого, но вы не хотите сохранять эту автоматически добавленную разметку.Вот чистое и эффективное решение:

  • Добавьте некоторую разновидность таксономии к оберткам, которые необходимо удалить перед любым сохранением, например общий класс или атрибут скрытых данных <span class="inline-highlighted-element"></span>.
  • Создайте черный список с идентификаторами (именами классов, атрибутами данных) элементов, которые должны быть удалены перед сохранением.
  • В вашей системе встроенного редактирования создайтеИспользуйте функцию очистки и используйте этот черный список для фильтрации содержимого каждый раз, когда пользователь пытается сохранить или обновить содержимое, после чего будет удалена автоматическая разметка, добавленная вашим сценарием расширения.
  • Возможно, вам потребуется воспроизведите функцию очистки на вашей серверной стороне , чтобы убедиться, что содержимое действительно будет правильно отфильтровано.
...