Могу ли я получить доступ к коду установщика htmlText в textArea во Flex? - PullRequest
0 голосов
/ 21 сентября 2010

Привет, Я вижу, что когда я устанавливаю htmlText в элементе управления textarea, свойство text содержит бесплатную HTML-версию текста. Так что где-то есть парсер, который извлекает html из содержимого, что было бы очень полезно для моих целей. Однако, основываясь на исходном коде flex, настройка html выполняется в UITextField.as, который является типом элемента текстового поля TextArea. Строка, которая делает работу: super.htmlText = value; в функции переопределить открытый набор функций htmlText (значение: String): void

Пытаясь следовать иерархии классов, я попадаю в класс FlexTextField, который расширяет класс текстового поля флэш-плеера.

Похоже, что я работаю во флэш-плеере. Так есть ли способ получить доступ к этой функции очистки HTML? Я что-то здесь упускаю?

С наилучшими пожеланиями Seref

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

В случае, если регулярное выражение не сработает, вот что вы можете проверить:

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);

output:

asd This is some text :)  
and more
1 голос
/ 21 сентября 2010

Нет, нет доступа к коду в собственных классах Flash Player.

Однако вы должны иметь возможность использовать регулярные выражения, чтобы легко анализировать все теги HTML в вашем контенте.

Хотя, не проверено, здесь есть один вариант , который появился в Google. Вы можете просто использовать это во Flex. Итак, вы, вероятно, можете сделать что-то вроде этого:

var regEx : RegExp = new RegExp('<(.|\n)*?>');
var noHTMLText = htmlText.replace(regEx , '');

Конечно, это было написано в браузере. Подробнее о регулярных выражениях в Flex .

...