屏蔽FLEX右键菜单以及实现自定义的FLEX右键功能

==========================================================================================

修订记录:

2007/06/07 :  创建

2007/07/02 : 修改了一个错误: getMouseTarget参数event为MouseEvent, 而不是MenuEvent类型

==========================================================================================

完全屏蔽FLEX右键菜单比当初想象的要难一些,因为大多数FLEX文档中仅仅介绍了如何隐藏一部分FLEX右键菜单,例如:

var contextMenu : ContextMenu = new ContextMenu();

contextMenu.hideBuiltInItems(); // 隐藏一些内建的鼠标右键菜单项

是这个功能不能隐藏"设置"和"关于"右键菜单,而在一些应用中,希望能够利用鼠标右键完成一些操作功能,例如绘图程序和游戏等,这时候右键菜单就是"欲

除之而后快"了.但在FLEX中监听mouseDown捕获不了右键事件,而在ContextMenu的Select事件也无法屏蔽.

其基本思路为:

1,在FLEX中利用外部接口注册一个函数, 作为接收外部(HTML)右键事件的入口

2,在FLEX应用所在的HTML中拦截鼠标右键事件,调用FLEX外部函数,并取消事件的广播,以阻止事件到达FLEX应用.

3,在FLEX应用程序上监听mouseOver事件,并记录当前鼠标所在对象

4,当入口函数接收到HTML发送的右键事件后,模拟生成一个鼠标右键事件(buttonDown = false), 并发送到当前对象

5,在对象的mouseDown处理函数中,根据buttonDown的标志,分别处理鼠标左右键事件

这个思路比较清晰可行, 鼠标右键事件的流程为:

HTML鼠标右键事件----FLEX外部函数-----模拟的鼠标右键事件------相应的处理函数

具体的实现为:

1, 在FLEX所在的HTML增加(注意根据自己的OBJECT ID更改"FlexTest")

function onNsRightClick(e){

if(e.which == 3){

FlexTest.openRightClick();

e.stopPropagation();

}

return false;

}

function onIeRightClick(e){

if(event.button > 1){

FlexTest.openRightClick();

parent.frames.location.replace('javascript: parent.falseframe');

}

return false;

}

if(navigator.appName == "Netscape"){

document.captureEvents(Event.MOUSEDOWN);

document.addEventListener("mousedown", onNsRightClick, true);

}

else{

document.οnmοusedοwn=onIeRightClick;

}

2, 修改FLEX的MXML

增加初始化和MOUSEOVER事件处理函数

增加MX SCRIPT

import mx.events.MenuEvent;

import mx.controls.Alert;

private var mouseTarget:DisplayObject;

function init()

{

ExternalInterface.addCallback("openRightClick", openRightClick);

}

function getMouseTarget(event:MouseEvent):void

{

mouseTarget = DisplayObject(event.target);

}

function openRightClick():void

{

var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, mouseTarget.mouseX, mouseTarget.mouseY);

mouseTarget.dispatchEvent(e);

}

function showMouseEvent(event)

{

if(event.buttonDown == true)

Alert.show("Left");

else

Alert.show("Right");

}

在修改完后,满怀信心的进行测试,结果右键菜单还能够出现!试了很多办法也不行,幸亏我的同事赵辉发现了解决方法,在这里向他表示感谢!

具体的方法就是修改wmode参数, 将wmode设置为opaque或transparent都可以达到这个效果

AC_FL_RunContent(

"src", "playerProductInstall",

"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",

"width", "100%",

"height", "100%",

"align", "middle",

"id", "FlexTest",            OBJECT ID

"wmode", "opaque",  //注意:这里是关键

"quality", "high",

"bgcolor", "#869ca7",

"name", "FlexTest",

"allowScriptAccess","sameDomain",

"type", "application/x-shockwave-flash",

"pluginspage", "http://www.adobe.com/go/getflashplayer"

);

ADOBE文档中对wmode的解释:

Sets

the Window Mode property of the SWF file for transparency, layering,

and positioning in the browser. Valid values of wmode are window,

opaque, and

transparent.

Set to window to play the SWF in its own rectangular window on a web page.

Set to opaque to hide everything on the page behind it.

Set

to transparent so that the background of the HTML page shows through

all transparent portions of the SWF file. This can slow animation

performance.

To make sections of your SWF file transparent, you

must set the alpha property to 0. To make your application's background

transparent, set the alpha

property on the tag to 0.

The wmode property is not supported in all browsers and platforms.

现在就可以灵活的使用鼠标右键功能了!在IE6和FF2.0中测试通过

当然还有几个问题:

1,据JOVE的介绍,在IE7中需要添加

event.stopPropagation();

event.cancelBubble = true;

因此还需要对浏览器进行一下判断,我没有装IE7,也就没有测,需要的朋友可以测试一下

2,一些有用的右键菜单,例如TEXT中能够自动弹出剪贴复制等功能的右键菜单,也没有了,真是有一利必有一弊啊! 不过这个还比较简单,可以再模拟一个ContextMenu的Select事件.

3, 对初始化流程应再进行一些改进,以保证FLEX的加载和外部接口建立成功后,再加以使用.

为转贴,原贴地址:http://blog.csdn.net/firefight/archive/2007/06/07/1641773.aspx

php 屏蔽鼠标右键 复制,FLEX屏蔽鼠标右键相关推荐

  1. Firefox 火狐浏览器升级版本后鼠标右键复制链接对应键盘快捷键的更换插件

    在之前的版本中,我们想复制页面上一个链接,可以使用鼠标放置到连接上,然后点击右键,然后左右按下键盘 A ,即可完成快速复制. 可是新版的右键复制链接对应键盘的 A 却更换成了 L ,一个在键盘最左边一 ...

  2. 【opencv】8.获取鼠标动作(滑轮滚动,左键按下,右键按下,鼠标移动)并进行相应处理

    获取鼠标动作进行相应处理 int main(){cv::imshow("EnvFusion", img); //这里显示一个窗口/*<!-- 在窗口上进行鼠标操作就使用 cv ...

  3. html点击控制盒子左右移动,JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例...

    JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例 发布时间:2020-10-04 12:47:25 来源:脚本之家 阅读:121 作者:s_psycho 本文实例讲述了JS实现鼠标拖拽盒子移动及右键 ...

  4. matlab无法右键,GUI右键菜单不能在鼠标右键的位置显示

    罗老师,你好.我按照您书中第六章例子6.3.3编写了一个可以读取图片,读取图片后对图片做放大和移动的gui.我看到您使用get得到鼠标位置后就可以设置GUI右键菜单的位置,从而实现点击鼠标右键就可以在 ...

  5. javascript实现自定义右键菜单(绑定鼠标左右键)

    文章目录 javascript实现自定义右键菜单 思路 1绑定右键函数 2.获取鼠标右键按下位置的x坐标(到左面的距离),y坐标(到上面的距离). 3.获取滚动条向下滚动距离,获取滚动条向左滚动距离 ...

  6. ws键盘右键_QTP 视频图像鼠标右键的录制

    一.对下面的视频图像录制鼠标右键操作,代码如下: Setting.WebPackage("ReplayType") = 2//修改值为2,代表使用鼠标运行鼠标操作 Window(& ...

  7. 百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. MobaXtem设置鼠标右击复制粘贴

    MobaXtem设置鼠标右击复制粘贴 打开MobaXtem页面,点击settings 选择Terminal,选中Paste using right-click,选择OK 设置好后,重启MobaXtem ...

  9. WIN10在文件夹对着文件点击右键无反应!鼠标一直在转圈圈然后会文件夹处会显示未响应!

    WIN10在文件夹对着文件点击右键无反应!鼠标一直在转圈圈然后会文件夹处会显示未响应!

最新文章

  1. UVA1455 - Kingdom(并查集 + 线段树)
  2. 【上】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS
  3. bilibili有电脑版吗_虚充制冷剂、谎称电脑版故障...空调维修的这些套路,你 中招了吗...
  4. Android 设置Activity透明
  5. superset可视化-桑基图(sankey diagram)
  6. linux离线安装python3.7教程_Linux傻瓜式七步完美安装Python3.7
  7. 2009网络视频监控业务分析及市场发展研究报告
  8. angularjs之UI Grid 的刷新 本地数据源及HTTP数据源
  9. 一件程序员必备武器的诞生
  10. axure不能导出图片_axure怎么导出图片 如何将原型另存为图片?
  11. 德勤:迈向移动操作系统—建立城市交通通用语言
  12. 从事IC设计工作强度大不大?是吃青春饭吗?
  13. 企业知识管理平台的作用及功能
  14. Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
  15. java 空格 char_java中如何判断char是否是空格
  16. Win10安装S32DS_ARM_V2018.R1
  17. 新手如何使用Github
  18. 教你在Java中实现3d编程简介
  19. 不死鸟一飞的学习网址
  20. 破除匪夷所思bugs,从修正编译警告开始

热门文章

  1. [高数][高昆轮][高等数学上][第一章-函数与极限]05.极限的运算法则
  2. Kali网络渗透实验一
  3. 卡尔曼滤波/粒子滤波融合定位模拟器
  4. Word2vec代码实现
  5. eclipse android模拟器 慢,android模拟器太慢怎么办?
  6. caffe笔记3(matlab程序)
  7. 首席新媒体运营黎想教程:3步教你如何做好社群运营
  8. After trying to increase PLL frequency, system shows the error: “Device may be operating in low-powe
  9. 标志logo设计/欣赏
  10. Java学习—初入Java