jQuery单击事件未重定向到href

时间:2010-12-02 03:49:42

标签: javascript jquery flash nyromodal preventdefault

我有一个带有嵌入式Flash影片的HTML页面,它有一个按钮。 Flash中的此按钮调用lnkEmail的click事件。它应该停止实际导航到新页面,但event.preventDefault();并且从事件处理程序返回false似乎对我不起作用。任何人都可以提供见解吗?

以下示例适用于Chrome,但在IE 7和FF中失败。在这些浏览器中,它重定向到一个空白页面,其中Object [object]作为正文,而在FF中,url设置为我在Flash影片中执行的javascript代码。 (即:“javascript:jQuery('#lnkEmail')。click();”)

以下是Flash ActionScript中的代码。

cmdDemo.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
   navigateToURL(
      new URLRequest(
         "javascript:jQuery('#lnkEmail').click();"
      ), 
      "_self"
   );
}

在包含HTML页面中,有以下脚本和元素:

<script type="text/javascript">
   $(function(){
      $.nyroModalSettings({
         debug: true
      });

      $('#lnkEmail').click(function(event) {
         event.preventDefault();
         $.nyroModalManual({
            url: 'demoRequest.aspx?Type=4'
         });
         return false;
      });
   });
</script>

后来在同一个文件中:

<div id="box_stage_home">
   <script type="text/javascript">
      $(document).ready(function() { 
         $('#HomeAnimation').flash({ 
            swf: 'Flash/index_page.swf', 
            height: 288, 
            width: 686, 
            wmode: 'transparent' 
         }); 
      });
   </script>
   <div id="HomeAnimation"><!--IE 6.0--></div>
   <a href="emailSend.aspx?Type=4" id="lnkEmail">&nbsp;</a>
</div>

2 个答案:

答案 0 :(得分:1)

查看navigateToURL文档:http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/package.html#navigateToURL%28%29。它不适用于javascript:链接。

要执行您想要的操作,请使用ExternalInterface.call()

答案 1 :(得分:0)

想出正确的方法(感谢corneliu)这样做,以为我会把它发回到这里作为参考。在html文件中:

<script type="text/javascript">
   function viewDemo() {
      $.nyroModalManual({
         url: 'emailSend.aspx?Type=4'
      });           
   }
</script>

在flash文件中:

import flash.system.Security;

cmdDemo.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent):void {
   flash.system.Security.allowDomain("business.com");
   ExternalInterface.call("viewDemo");
}