Событие щелчка jQuery не перенаправляет на href - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть HTML-страница со встроенным флэш-фильмом, в которой есть кнопка.Эта кнопка во флэш-памяти вызывает событие click lnkEmail.Предполагается, что он фактически не будет переходить на новую страницу, но event.preventDefault ();и возвращение false из обработчика событий, похоже, не работает для меня.Кто-нибудь может предоставить информацию?

Приведенный ниже пример работает в Chrome, но не работает в IE 7 и FF.В этих браузерах он перенаправляет на пустую страницу с Object [object] в качестве тела, а в FF в качестве URL-адреса задан код JavaScript, который я выполняю из фильма Flash.(т.е.: "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 ]

1 голос
/ 03 декабря 2010

Ознакомьтесь с документацией navigateToURL: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/package.html#navigateToURL%28%29. Она не предназначена для использования со ссылками javascript:.

Чтобы сделать то, что вы хотите, используйте ExternalInterface.call().

0 голосов
/ 04 декабря 2010

Выяснил, как правильно (спасибо corneliu) сделать это, поэтому подумал, что я опубликую его здесь для справки.В html-файле:

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

Во флеш-файле:

import flash.system.Security;

cmdDemo.addEventListener(MouseEvent.CLICK, clickHandler);

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