我正在使用Spark的TextArea,其中包含如下链接:
<a href="https://twitter.com/search?q=%23hashtag" target="_blank">#hashtag</a>
如您所见,这是指向特定主题标签的Twitter搜索页面的链接。必须在查询字符串中转义哈希符号。但是,我在这里遇到了一个问题:当我点击链接时,'%'符号会自动转义,并且URL会损坏(...search?q=%2523hashtag
)。我可以关闭这种自动转义吗?
如果在URL中使用“#”符号,则不会转义,因此在这种情况下Twitter页面无法正确打开。所以我不能在URL中使用'#'和'%23'。
我很感激任何解决方案。 谢谢。
答案 0 :(得分:0)
好的...到目前为止,我无法找到一种方法来点击点击后自动转义网址。但我找到了解决方法。
基本上,我向TextFlow中的所有链接元素添加自定义单击处理程序,并在单击时手动打开链接(而不是内置的TLF行为)。像这样:
public function addLinkHandler( textFlowOrGroupElement: FlowGroupElement ): void
{
// scan the flow elements
for ( var f1: int = 0; f1 < textFlowOrGroupElement.numChildren; f1 ++ ) {
// found element
var curFlowGroupElement: FlowElement = textFlowOrGroupElement.getChildAt( f1 );
// if this is the link element, add the click event listener
if ( curFlowGroupElement is LinkElement ) {
( curFlowGroupElement as LinkElement ).addEventListener( FlowElementMouseEvent.CLICK, onLinkClick );
}
// if this is another flow group
else if ( curFlowGroupElement is FlowGroupElement ) {
// scan this group in turn, recursively
addLinkHandler( curFlowGroupElement as FlowGroupElement );
}
}
}
,这是链接的点击处理程序:
public function onLinkClick( e: FlowElementMouseEvent ): void
{
e.stopImmediatePropagation();
e.preventDefault();
var linkElement: LinkElement = e.flowElement as LinkElement;
navigateToURL( new URLRequest( linkElement.href ), '_blank' );
}
所以最后要让Twitter-hashtag链接在TextArea中正常工作,我这样做:
addLinkHandler( textArea.textFlow );
P.S。添加点击处理程序的算法基于this post,但已经过优化。