HTML-символы в редакторе jWysiwyg

Я теряюсь в том, что это может быть за проблема. Я использую jQuery long с плагином jWysiwyg.

Всякий раз, когда я ввожу имя объекта HTML или номер © или © в редакторе, он возвращается к фактическому символу. Для этого нет функции, и я предполагаю, что это должна быть настройка символов.

У меня нет проблем с этим для некоторых символов, но не для всех, так как некоторые из них появляются в виде квадратных прямоугольников или черного ромба на самой веб-странице при публикации.

Я пытался изменить наборы символов везде, где это возможно, и это не решает мою проблему.

Как кто-нибудь еще сталкивался с этим и имел работу, чтобы исправить это?


person Tim    schedule 18.06.2011    source источник


Ответы (2)


Это потому, что редакторы WYSIWYG отображают объекты html, такие как их символьное значение (символ авторского права), точно так же, как изображение в редакторе WYSIWYG. У меня была аналогичная проблема с другим редактором на основе jQuery.

Я предполагаю, что единственный способ исправить это - преобразовать его обратно в html-объект при отправке или, вероятно, с меньшей вероятностью работать должным образом, заменить строку & на & для каждого html-объекта при загрузке редактора. Таким образом, он будет отображаться как © вместо символа авторского права, что должно (?) Заставлять его храниться как © вместо символа...

Возможно, это поможет? Это служебная функция, созданная для jwysiwyg, предназначенная для публикации вещей в виде их кода html-сущности. Хотя эта идея динамического использования тегов <code>, вероятно, тоже будет работать хорошо :P, и вы просто будете использовать strip_tags на сервере.

person Benno    schedule 18.06.2011
comment
Я бы сначала попробовал это. - person Dave; 18.06.2011
comment
Спасибо, сначала попробую этот. - person Tim; 18.06.2011
comment
Это работает - ожидайте, что немного хорошо. Он преобразует все, как в открывающих и закрывающих скобках в ссылках, абзацах и т. д. Попробую другой пример. Спасибо - person Tim; 18.06.2011

Забавно, вы сами ответили на свой вопрос.

Когда я впервые загрузил эту страницу, я заметил © и был сбит с толку тем, что вы пытались сделать. Затем вы отредактировали его, и © стал &#169;. Если вы просмотрите исходный код, вы увидите, что когда вы нажимаете кнопку «блок кода» в редакторе StackOverflow, символ копирования отображается так, как вы этого хотели.

Это было сделано путем помещения его в элемент кода в html (вы можете щелкнуть правой кнопкой мыши > откройте источник, чтобы увидеть...

<p>Whenever I enter an HTML Entity Name or Number <code>&amp;copy;</code> or <code>&amp;#169;</code> within the editor it reverts to the actual character. There is no function for this, which I assume it must be character setting.</p> 

Я никогда не использовал редактор, на который вы ссылаетесь; но похоже, что они просто используют события javascript по умолчанию. Итак, для достижения вашей цели вам, вероятно, придется добавить событие в свой редактор, а затем на KeyUp вы ищете в тексте специальные символы и заключаете их в код. Таким образом, псевдокод будет выглядеть примерно так (я не проверял это, поэтому он может быть немного глючным)...

  $("textarea").wysiwyg({
    keyup: function(event) {

      var editorContent = getContent();  // Or whatever you call to get the content

      // Replace all instances of $# followed by 3 digits and a semicolon, with
      // the same thing, only wrapped in a code block.
      editorContent.replace(/&#[\d]{3};/g, <code>&#[\d]{3};<\\code>); 

      // Again, I don't know if this function exists, just throwing it out
      // there so you get the general idea.
      setEditorContent(editorContent);
    }
  });

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

person Dave    schedule 18.06.2011
comment
Я пробовал этот метод, который оборачивает элемент кода. Я также делал вручную, когда текст копировался и вставлялся. Теоретически я вижу, к чему вы клоните. К сожалению, все еще меняется. <code>&#169;</code> переключается на <code>©</code> Что наводит меня на мысль, что в самом редакторе должна быть ошибка. Я нашел другие редакторы, которые не имеют проблем или не имеют специальных плагинов, позволяющих ему работать. - person Tim; 18.06.2011
comment
Единственное, что я могу сказать, это то, что это может быть не ошибка; это могут быть фильтры XSS, встроенные в редактор. Даже несмотря на то, что любой, кто пытается атаковать XSS через ваш текстовый редактор, вероятно, знает, как обойти любые фильтры на стороне клиента; Я не удивлюсь, если они все еще существуют в редакторе, который вы используете на всякий случай. Если вы еще не знакомы с XSS-атаками, вам следует погуглить и прочитать, особенно если вы работаете с общедоступным сайтом. - person Dave; 19.06.2011
comment
У меня он защищен от атак, так что со мной все в порядке. Что касается всего этого сценария HTML Entities, я решил просто пойти по этому пути. ссылка, здесь используется сценарий, а не эквивалент того, что он предлагает , я изменю их на настоящий HTML-символ, который работает с редактором и веб-сайтами. - person Tim; 19.06.2011