هل يمكنني الوصول إلى رمز Setter HTMLText في Textarea في Flex؟

StackOverflow https://stackoverflow.com/questions/3759952

  •  04-10-2019
  •  | 
  •  

سؤال

تحياتي ، أستطيع أن أرى أنه عندما أقوم بتعيين htmltext في عنصر تحكم textarea ، تحتوي خاصية النص على إصدار HTML المجاني للنص. لذلك هناك محلل في مكان ما تمزيق HTML من المحتوى ، والذي سيكون مفيدًا جدًا لأغاني. ومع ذلك ، استنادًا إلى رمز المصدر Flex ، يتم إعداد HTML في uitextfield.as ، وهو نوع عضو Textfield في Textarea. الخط الذي يقوم بالعمل هو: super.htmltext = value ؛ في وظيفة تجاوز الوظيفة ، قم بتعيين htmltext (القيمة: السلسلة): void

في محاولة لمتابعة الفصل الدراسي ، انتهى بي الأمر في فئة FlexTextField ، والتي تمتد فئة TextField الخاصة بـ Flash Player.

يبدو أن الوظيفة التي أنا بعدها في Flash Player. فهل هناك أي طريقة للوصول إلى وظيفة تنظيف HTML هذه؟ نسيت شيئا ما هنا؟

مع أطيب التحيات SEREF

هل كانت مفيدة؟

المحلول

في حالة فشلك 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);

ملاحظة: لم أختبر رمز 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

نصائح أخرى

كلا ، لا توجد طريقة للوصول إلى التعليمات البرمجية في الفصول الأصلية لمشغل فلاش.

ومع ذلك ، يجب أن تكون قادرًا على استخدام regex لتحليل جميع علامات HTML بسهولة في المحتوى الخاص بك.

على الرغم من عدم اختباره ، هنا هو خيار واحد التي ظهرت في جوجل. يمكنك فقط استخدام ذلك في Flex. لذلك ، ربما يمكنك أن تفعل شيئًا كهذا:

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

بالطبع ، كان هذا مكتوبًا في المتصفح. مزيد من المعلومات حول Regex in Flex.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top