0

ボタンのある Flash ムービーが埋め込まれた HTML ページがあります。フラッシュ内のこのボタンは、lnkEmail のクリック イベントを呼び出します。実際には新しいページへの移動を停止するはずですが、event.preventDefault(); イベントハンドラーから false を返すことは、私にとってはうまくいかないようです。誰でも洞察を提供できますか?

以下の例は Chrome で動作していますが、IE 7 と FF では失敗します。これらのブラウザでは、オブジェクト [オブジェクト] を本文として空白のページにリダイレクトし、FF では、Flash ムービー内から実行する JavaScript コードに URL が設定されています。(例: "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>
4

2 に答える 2

1

navigateToURLドキュメントを見てみましょう: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/package.html#navigateToURL%28%29javascript:リンクで使用することは意図されていません。

必要なことを行うには、 を使用しますExternalInterface.call()

于 2010-12-03T13:06:08.863 に答える
0

これを行う適切な方法 (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");
}
于 2010-12-04T04:51:29.987 に答える