Могу ли я получить доступ к HTMLText Setter Code в Textarea в Flex?
-
04-10-2019 - |
Вопрос
Приветствия, я вижу, что когда я устанавливаю HTMLText в управлении Textarea, текстовое свойство содержит бесплатную версию текста HTML. Таким образом, есть парсер где-то, что рвет HTML из контента, который был бы очень полезным для моих целей. Однако на основе исходного кода Flex настроек HTML выполняется в UITExtField.as, который является типом элемента TextField Textarea. Линия, которая выполняет работу: Super.htmltext = значение; В разделе «Общедоступ функции функции» HTMLText (значение: строка): пустота
Попытка следовать по хиарархии класса, я в конечном итоге в классе FlextextField, который расширяет класс Textfield Flash Player.
Похоже, что функциональность, которую я нахожусь после Flash Player. Так есть ли способ получить доступ к этой функции очистки HTML? Я что-то упускаю здесь?
С наилучшими пожеланиями Сереф
Решение
В случае, если Regex не удается, вот то, что вы можете проверить:
var t:String = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(x:XML):String {
var t:String = "";
var children:XMLList = x.children();
var child:XML;
for(var i:Number = 0; i < children.length(); i++){
child = children[i];
if(child.nodeKind() == "text")
t += child.toString();
else if(child.nodeKind() == "element")
t += stripTags(child);
}
return t;
}
var x:XML = new XML("<root>" + t + "</root>");
XML.ignoreWhitespace = false;
var s:String = stripTags(x);
trace(s);
PS: Я не проверил этот код ActionScript, вот эквивалентный код JavaScript, который я проверен и нашел работу. Я предполагаю, что это будет работать в Actionscript, так как оба следуют ECMAScript.
var t = "asd <span>This is <font>some</font> text <b> :) </b> </span> \nand more";
function stripTags(str){
function strip(x){
var t = "";
var children = x.children();
var child;
for(var i = 0; i < children.length(); i++){
child = children[i];
if(child.nodeKind() == "text")
t += child.toString();
else if(child.nodeKind() == "element")
t += strip(child);
}
return t;
}
var xml = new XML("<root>" + str + "</root>");
XML.ignoreWhitespace = false;
return strip(xml);
}
var s = stripTags(t);
console.log(s);
выход:
asd This is some text :)
and more
Другие советы
Нет, нет никакого способа доступа к коду в родных классах Flash Player.
Тем не менее, вы должны быть в состоянии использовать Regex, чтобы легко изменить все HTML-теги в вашем контенте.
Хотя, не проверено, вот Один вариант Это подошло в Google. Вы можете просто использовать это в Flex. Итак, вы, вероятно, можете сделать что-то вроде этого:
var regEx : RegExp = new RegExp('<(.|\n)*?>');
var noHTMLText = htmlText.replace(regEx , '');
Конечно, это было написано в браузере. Больше информации на Regex в Flex.