Разрывы строк в ActionScript 3.0 в текстовых полях - PullRequest
1 голос
/ 21 ноября 2011

Может ли TextField содержать разрывы строк различного типа?

Я сохраняю и загружаю текст из поля ввода в XML. Я сохраняю его как теги CDATA, включая разрывы строк.

Вот что происходит:

  1. Я набираю текст с переносами строк в текстовое поле
  2. Я сохраняю текст в XML
  3. Я очищаю текстовое поле
  4. Я загружаю xml в текстовое поле - все выглядит как положено, разрывы строк присутствуют
  5. Я снова сохраняю то же самое текстовое поле (единственное отличие на этот раз - контент был загружен, а не напечатан вручную)
  6. На этот раз XML не содержит разрывов строк
  7. когда я загружаю его снова, текст не имеет разрывов строки

Как это может быть?

// вот пример, демонстрирующий проблему:

var xml1 = <xml>
               <elm/>
           </xml>;

xml1.elm.text = new XML("<![CDATA[" + textField.text + "]]>");

trace(xml1);

textField.text="";
textField.appendText(xml1.elm.text());

var xml2 = <xml>
               <elm/>
           </xml>;

xml2.elm.text = new XML("<![CDATA[" + textField.text + "]]>");

trace(xml2);

Я ввожу в текстовое поле текст

это перевод строки

И запустите код на нем. Хотя после этого текстовое поле выглядит все еще хорошо (отображает разрыв строки), вывод кода показывает:

<xml>
  <elm><![CDATA[this is
a linebreak]]></elm>
</xml>
<xml>
  <elm><![CDATA[this isa linebreak]]></elm>
</xml>

Как это может быть?

1 Ответ

0 голосов
/ 21 ноября 2011

Попробуйте кодировать текстовое значение

xml1.elm.text = new XML("<![CDATA[" + encodeURIComponent(textField.text) + "]]>");
...