Как заставить клавишу Tab Вставить символ табуляции в contentEditable отделение?

Я создаю простого текстового редактора путем установки contentEditable=true на отделении (так или иначе я думаю, что текстовая область ведет себя таким же образом) и у меня есть некоторые проблемы с клавишей Tab.

То, что я хочу, - то, что, когда пользователь нажимает клавишу Tab, фокус остается на отделении, и символ табуляции добавляется к тексту.

Я решил первую часть проблемы путем вызова preventDefault() на объекте-событии на keydown и теперь отделение не теряет фокус, но я не знаю, почему я не могу вставить символ.

Код сущности для символа вкладки 	 но если я пытаюсь добавить, что эта строка к innerHTML Firefox заменяет его простым пространством (нет   просто пробел). Я также попробовал \t но результатом является то же.

Таким образом, мой вопрос, как я могу вставить символ табуляции в текст?

17
задан Ciro Santilli 新疆改造中心法轮功六四事件 31 July 2015 в 09:31
поделиться

2 ответа

Прямо из комментариев в settings.py...

MEDIA _ ROOT

MEDIA _ ROOT - абсолютный путь к каталогу, в котором хранятся носители, например /home/media/media.lawrence.com/.

MEDIA _ URL

MEDIA _ URL - это URL-адрес, который обрабатывает носитель, обслуживаемый с помощью MEDIA _ ROOT . При наличии компонента пути обязательно используйте завершающую косую черту (в других случаях необязательно). Примеры: « http://media.lawrence.com », « http://example.com/media/ ».

Итак, перефразировать эти... MEDIA _ ROOT - это место физического размещения файлов в системе, а MEDIA _ URL - место сопоставления этих файлов. При разработке это не всегда может быть доступно, и в большинстве случаев среда разработки и производственная среда не совпадают, и это то, что вам придется вернуться и изменить. Другое дело, что это НЕ ХОРОШАЯ ПРАКТИКА, когда Джанго был разработан НЕ для обслуживания статического контента для вас.

Если вы собираетесь использовать это в разработке, я предлагаю использовать метод , ограничивающий его DEBUG = True . Указание Django обслуживать статический контент из временного места во время разработки, когда для DEBUG установлено значение True , является гораздо лучшей и более безопасной практикой. Вы НЕ собираетесь вводить сайт в производство с помощью DEBUG , верно? Ну, по крайней мере, не стоит.

Вот как я его реализовал:

settings.py:

STATIC_DOC_ROOT = os.path.join(os.getcwd(), 'site_media')

urls.py:

from django.conf import settings
## debug stuff to serve static media
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
            {'document_root': settings.STATIC_DOC_ROOT}),
   )

Таким образом, любой проект, над которым я работаю, имеет каталог site _ media внутри него со всеми необходимыми носителями. В dev он является автономным, и мне не нужно переворачивать какие-либо биты в настройках, кроме DEBUG , что я бы делал в любом случае.

-121--1640921-

Посмотрите на использование селектора суррогата + суррогата. Что вместе со связующим на десериализации должны сделать трюк.

-121--3586979-

Причина, по которой вы видите только простой космос, заключается в том, что последовательности символов пробела Если вы хотите, чтобы символ табуляции отображался так, как вы ожидаете, вы должны поместить его в что-то вроде элемента < pre > , который отображает пробел как в исходном HTML, или внутри элемента с пробелом: pre set

7
ответ дан 30 November 2019 в 10:09
поделиться

табуляции и пробелы сворачиваются в html до одного пробела, если только в теге

  или в его стиле 

есть white-space: pre
11
ответ дан 30 November 2019 в 10:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: