屏蔽浏览器的鼠标右键,同时监听鼠标右键,当触发右键点击事件的时候,JavaScript调用Flex程序中的方法生成自定义的右键菜单。
首先添加JavaScript代码(可以修改Flex工程下html-template/index.template.html,防止编译的时候原来写的JavaScript代码全部被清空)
- <script>
- function onNsRightClick(e){
- if(e.which == 3){
- FlexTest.openRightClick();
- e.stopPropagation();
- }
- stopDefault();
<script> function onNsRightClick(e){ if(e.which == 3){ FlexTest.openRightClick(); e.stopPropagation(); } stopDefault();
- returnfalse;
- }
- function onIeRightClick(e){
- if(event.button > 1){
- FlexTest.openRightClick();
- //Flex.openRightClick();//这句话是为了出错让js不再往下执行,从而禁止flash中鼠标右键的现实,但是在状态栏中会报错;
- parent.frames.location.replace('javascript: parent.falseframe');
- e.stopPropagation(); //这句是关键
- }
- 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();
- returnfalse;
- }
- //stopDefault方法是可以阻止浏览器的默认事件触发,试用了下,在IE6下能实现是阻止右键,但是在IE8下就不管事了。
- function stopDefault( e ) {
- if ( e && e.preventDefault ){
- e.preventDefault();
- }else{
- window.event.returnValue = false;
- }
- returnfalse;
- }
- if(navigator.appName == "Netscape"){
- document.captureEvents(Event.MOUSEDOWN);
- document.addEventListener("mousedown", onNsRightClick, true);
- }else{
- document.onmousedown=onIeRightClick;
- }
- </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代码:
- 在<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>
在<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都可以达到这个效果
- AC_FL_RunContent(
- "src", "playerProductInstall",
- "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
- "width", "100%",
- "height", "100%",
- "align", "middle",
- "id", "FlexTest",
- "wmode", "opaque", //////////////////////注意:这里是关键
- "quality", "high",
- "bgcolor", "#869ca7",
- "name", "FlexTest",
- "allowScriptAccess","sameDomain",
- "type", "application/x-shockwave-flash",
- "pluginspage", "http://www.adobe.com/go/getflashplayer"
- );
相关推荐
在许多应用程序中,特别是那些具有高度交互性的Web应用,开发者可能希望控制用户的所有交互行为。默认情况下,浏览器的右键菜单允许用户进行复制、粘贴、查看源代码等操作,这些在某些情况下可能对应用的完整性或...
通过以上步骤,你已经成功地编译了JWPlayer,自定义了Logo,移除了右键菜单项,更换了皮肤,甚至添加了自定义功能按键。这种自定义能力使JWPlayer成为了一个极其灵活的视频播放解决方案,可以根据不同项目的需求进行...
为List创建右键菜单 5.13节.自定义List被选中项的外观 第六章. DataGrid和高级DataGrid(179) 6.1节. 创建DataGrid自定义列 6.2节. 为DataGrid列设定排序函数 6.3节. 启动DataGrid多列排序 6.4节. 过滤DataGrid数据...
#### 1.2 自定义应用程序属性 **问题:** 如何更改生成的 SWF 文件的尺寸或背景颜色? **解决方法:** 1. **通过编译器参数修改:** - 右键点击项目,在弹出菜单中选择 `Properties`。 - 选择左侧的 `ActionScript...
支持的客户端包括但不限于ArcGIS for Desktop、ArcGIS Explorer Desktop、ArcGIS Online以及基于Web API(如JavaScript、Silverlight和Flex)构建的自定义Web应用程序。 #### 四、地理处理包和服务的创建步骤 1. *...