Actionscript 3 从打开web浏览器中禁用文本字段内的超链接

Actionscript 3 从打开web浏览器中禁用文本字段内的超链接,actionscript-3,flash,hyperlink,textfield,Actionscript 3,Flash,Hyperlink,Textfield,在Flash中,我有一个带有超链接的文本字段。这将触发linkclicked事件,在该事件中,我正在读取事件ID代码并相应地做出响应 问题是每次单击链接时,web浏览器都会打开相同的链接。如何禁用web浏览器打开?请尝试以下操作。。您可以通过使用Switch/Case语句来区分链接,如果更简单,则只需使用多个if/Else语句即可 myTextField.addEventListener(TextEvent.LINK, linkClickHandler); function linkClick

在Flash中,我有一个带有超链接的文本字段。这将触发linkclicked事件,在该事件中,我正在读取事件ID代码并相应地做出响应


问题是每次单击链接时,web浏览器都会打开相同的链接。如何禁用web浏览器打开?

请尝试以下操作。。您可以通过使用Switch/Case语句来区分链接,如果更简单,则只需使用多个if/Else语句即可

myTextField.addEventListener(TextEvent.LINK, linkClickHandler);

function linkClickHandler(evt:TextEvent):void 
{
    trace("## clicked text is: " + evt.text);

    if (evt.text == "what_you_want")
    {
        var url_1 : String = "http://www.example_A.com/";
        var request_1 : URLRequest = new URLRequest( url_1 );
        navigateToURL( request_1, '_blank' );
    }

    if (evt.text == "something_else")
    {
        var url_2 : String = "http://www.example_B.com/";
        var request_2 : URLRequest = new URLRequest( url_2 );
        navigateToURL( request_2, '_blank' );
    }

}
TL;DR版本: 无论是在Flash Player中还是在空中,web浏览器都会弹出的唯一原因是您忘记将
事件:
添加到锚href的开头

全文解释如下: 您不需要使用
event.preventDefault()
event.stopPropagation()
来阻止web浏览器打开。事实上,您甚至不需要订阅
TextEvent.LINK
事件。您需要做的就是确保将
事件:
作为前缀添加到锚定标记的href中

经过长时间的调试后,我发现只有href对以下两种情况负责:

行为1-您的href有
事件:
前缀

  • web浏览器在任何情况下都不会打开
  • 如果您已经订阅了
    TextEvent.LINK
    事件,它将在用户单击链接时被触发。如果没有,什么也不会发生
  • TextEvent.LINK
    事件可以添加到任何父显示对象,例如父精灵,甚至舞台。它不需要特别添加到相关的文本字段中
行为2-您的href没有
事件:
前缀

  • 单击此类链接时,
    TextEvent.LINK
    不会触发。因此,它不能用来阻止web浏览器打开
  • web浏览器根据
    target
    属性打开/处理链接href
  • 如果
    target
    \u self
    ,并且您已经在web浏览器中(使用Flash Player),则重复使用相同的窗口/选项卡来打开链接。如果您在空中,则默认的web浏览器会随着链接弹出打开

您是否在
链接处理程序中尝试了
event.preventDefault()
event.stopPropagation()
?在该链接中,您显示的内容不足以满足您的要求。。?使用
TextEvent.LINK
捕获链接并运行内部AS3函数。@Brain-由于一些复杂问题,我无法做到这一点。我会尝试一下,让你知道。@VC.One-我正在做一个变化,是的。但是因为我在空中,Flash也会打开一个网络浏览器。我将尝试
preventDefault()
或类似的方法,并让您知道。谢谢大家,经过长时间的调试,我终于找到了答案。我的结论列在下面的回答中。如果有帮助的话就投票吧!那很好,但我想要的恰恰相反。我已经在处理链接并阅读
evt.text
,我知道这一点。问题是Flash会自动打开web浏览器,查看链接文本中的任何内容。我不想打开web浏览器。但问题是,当我单击“播放”或“暂停”时,Flash会另外打开一个web浏览器!我不想打开web浏览器,因为我已经响应了应用程序中的链接!我在AdobeAIR,如果这很重要的话,不是浏览器中的Flash Player。好东西,分享这个解决方案非常有用。