`
兩ting
  • 浏览: 75593 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

flex web应用程序生成自定义右键菜单

    博客分类:
  • flex
阅读更多

屏蔽浏览器的鼠标右键,同时监听鼠标右键,当触发右键点击事件的时候,JavaScript调用Flex程序中的方法生成自定义的右键菜单。

 

首先添加JavaScript代码(可以修改Flex工程下html-template/index.template.html,防止编译的时候原来写的JavaScript代码全部被清空)

 

 

Java代码 复制代码 收藏代码
  1. <script>
  2. function onNsRightClick(e){
  3. if(e.which == 3){
  4. FlexTest.openRightClick();
  5. e.stopPropagation();
  6. }
  7. stopDefault();
<script>
function onNsRightClick(e){
    if(e.which == 3){
         FlexTest.openRightClick();
         e.stopPropagation(); 
    }
    stopDefault();
Java代码 复制代码 收藏代码
  1. returnfalse;
  2. }
  3. function onIeRightClick(e){
  4. if(event.button > 1){
  5. FlexTest.openRightClick();
  6. //Flex.openRightClick();//这句话是为了出错让js不再往下执行,从而禁止flash中鼠标右键的现实,但是在状态栏中会报错;
  7. parent.frames.location.replace('javascript: parent.falseframe');
  8. e.stopPropagation(); //这句是关键
  9. }
  10. stopDefault();
    return false;
}

function onIeRightClick(e){
     if(event.button > 1){
          FlexTest.openRightClick();  

          //Flex.openRightClick();//这句话是为了出错让js不再往下执行,从而禁止flash中鼠标右键的现实,但是在状态栏中会报错;  

          parent.frames.location.replace('javascript: parent.falseframe');
          e.stopPropagation();                   //这句是关键
      }
      stopDefault();
Java代码 复制代码 收藏代码
  1. returnfalse;
  2. }
  3. //stopDefault方法是可以阻止浏览器的默认事件触发,试用了下,在IE6下能实现是阻止右键,但是在IE8下就不管事了。
  4. function stopDefault( e ) {
  5. if ( e && e.preventDefault ){
  6. e.preventDefault();
  7. }else{
  8. window.event.returnValue = false;
  9. }
  10. returnfalse;
  11. }
  12. if(navigator.appName == "Netscape"){
  13. document.captureEvents(Event.MOUSEDOWN);
  14. document.addEventListener("mousedown", onNsRightClick, true);
  15. }else{
  16. document.onmousedown=onIeRightClick;
  17. }
  18. </script>
      return false;

}
//stopDefault方法是可以阻止浏览器的默认事件触发,试用了下,在IE6下能实现是阻止右键,但是在IE8下就不管事了。
 function stopDefault( e ) { 
                if ( e && e.preventDefault ){
                    e.preventDefault(); 
                }else{ 
                    window.event.returnValue = false; 
                }
                return false; 
            } 
if(navigator.appName == "Netscape"){
      document.captureEvents(Event.MOUSEDOWN); 
      document.addEventListener("mousedown", onNsRightClick, true); 
}else{
      document.onmousedown=onIeRightClick; 
}

</script>


Flex代码:

 

Java代码 复制代码 收藏代码
  1. 在<mx:Application>中添加createComplete="{init()}"
  2. //注册一个回调函数
  3. private function init():void{
  4. ExternalInterface("openRightClick",showMenu);
  5. }
  6. //菜单位置
  7. private function showMenu():void{
  8. tempMenu.x = this.mouseX;
  9. tempMenu.y = this.mouseY;
  10. }
  11. //菜单的布局
  12. <mx:Canvas id="tempMenu" backgroundColor="0xFFFFFF">
  13. ...
  14. </mx:Canvas>
在<mx:Application>中添加createComplete="{init()}"

//注册一个回调函数
private function init():void{
    ExternalInterface("openRightClick",showMenu);
}

//菜单位置
private function showMenu():void{
      tempMenu.x = this.mouseX;
      tempMenu.y = this.mouseY;
}

//菜单的布局
<mx:Canvas id="tempMenu" backgroundColor="0xFFFFFF">
      ...
</mx:Canvas>

 

 

另外还需要添加如下关键的配置

改wmode参数, 将wmode设置为opaque或transparent都可以达到这个效果

Java代码 复制代码 收藏代码
  1. AC_FL_RunContent(
  2. "src", "playerProductInstall",
  3. "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
  4. "width", "100%",
  5. "height", "100%",
  6. "align", "middle",
  7. "id", "FlexTest",
  8. "wmode", "opaque", //////////////////////注意:这里是关键
  9. "quality", "high",
  10. "bgcolor", "#869ca7",
  11. "name", "FlexTest",
  12. "allowScriptAccess","sameDomain",
  13. "type", "application/x-shockwave-flash",
  14. "pluginspage", "http://www.adobe.com/go/getflashplayer"
  15. );
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics