讓 Flex 內不可選擇的文字超連結生效

本文介紹了一種在Flex應用中使不可選擇的文本保持超連結功能的方法。通過對FocusManager的臨時禁用,實現了Label和Text組件中HTML超連結的有效點擊,解決了Flex內超連結失效的問題。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讓 Flex 內不可選擇的文字超連結生效

在 Flash 內,不可選擇的 (unselectable) TextField 仍可保留 HTML 超連結功能
但是 Flex 卻不行
查文件上也有寫到 Label.selectable

其實不光是 Label, Text 組件不行
任何一個在 Flex App 下的 unselectable TextField 超連結都會失效
這樣需要用到不可選擇的超連結文字時就很不方便

Flex 超連結失效測試程式:

於是花了不少力氣去追蹤原因
終於發現是 Flex 內的 FocusManager 刻意攔截下 unselectable TextField Focus 事件
這也間接造成超連結失效

既然知道問題是出在 FocusManager 上
問題就比較好處理了
以下是變通方式,讓 FocusManager 短暫失效一下~

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

   fontSize="12" backgroundColor="#F0F0F0">

 <mx:Script>

  <![CDATA[

   import flash.events.*;

   import mx.managers.FocusManager;

   

   public function onTxtLink(evtObj:Event):void{

    textArea.text += evtObj + "/n";

   }

  ]]>

 </mx:Script>

 <mx:Label selectable="false" link="onTxtLink(event)"

   rollOver="focusManager.deactivate()" rollOut="focusManager.activate()">

  <mx:htmlText>

   <![CDATA[Flex Label : <a href='event:linkEvent'>Link Event Text</a> | ]]>

   <![CDATA[<a href='http://ticore.blogspot.com' target='_blank'>Ticore's Blog</a>]]>

  </mx:htmlText>

 </mx:Label>

 

 <mx:Text selectable="false" link="onTxtLink(event)"

   rollOver="focusManager.deactivate()" rollOut="focusManager.activate()">

  <mx:htmlText>

   <![CDATA[Flex Text : <a href='event:linkEvent'>Link Event Text</a> | ]]>

   <![CDATA[<a href='http://ticore.blogspot.com' target='_blank'>Ticore's Blog</a>]]>

  </mx:htmlText>

 </mx:Text>

 

 <mx:Button label="Clear Log" click="textArea.text = '';" />

 <mx:TextArea id="textArea" width="100%" height="100%" />

</mx:Application>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值