`
nianshi
  • 浏览: 416415 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

一个禁止flash右键的方法

    博客分类:
  • Flex
阅读更多


在做一个实验时遇到一个禁止flash的右键功能的问题。在网上找了很多方法,要不就完全不行,要不就浏览器不兼容。Google了一下 国外的情况,终于找到了一个不错的方法。该方法用了javascript和as的结合,完美解决了问题。

以下是javascript部分代码:


   1. var RightClick = {
   2.     /**
   3.      *  Constructor
   4.      */ 
   5.     init: function () {
   6.         this.FlashObjectID = "customRightClick";
   7.         this.FlashContainerID = "flashcontent";
   8.         this.Cache = this.FlashObjectID;
   9.         if(window.addEventListener){
  10.              window.addEventListener("mousedown", this.onGeckoMouse(), true);
  11.         } else {
  12.             document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); }
  13.             document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}
  14.             document.getElementById(this.FlashContainerID).onmousedown = RightClick.onIEMouse;
  15.         }
  16.     },
  17.     /**
  18.      * GECKO / WEBKIT event overkill
  19.      * @param {Object} eventObject
  20.      */
  21.     killEvents: function(eventObject) {
  22.         if(eventObject) {
  23.             if (eventObject.stopPropagation) eventObject.stopPropagation();
  24.             if (eventObject.preventDefault) eventObject.preventDefault();
  25.             if (eventObject.preventCapture) eventObject.preventCapture();
  26.          if (eventObject.preventBubble) eventObject.preventBubble();
  27.         }
  28.     },
  29.     /**
  30.      * GECKO / WEBKIT call right click
  31.      * @param {Object} ev
  32.      */
  33.     onGeckoMouse: function(ev) {
  34.         return function(ev) {
  35.         if (ev.button != 0) {
  36.             RightClick.killEvents(ev);
  37.             if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
  38.                 RightClick.call();
  39.             }
  40.             RightClick.Cache = ev.target.id;
  41.         }
  42.       }
  43.     },
  44.     /**
  45.      * IE call right click
  46.      * @param {Object} ev
  47.      */
  48.     onIEMouse: function() {
  49.         if (event.button> 1) {
  50.             if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {
  51.                 RightClick.call(); 
  52.             }
  53.             document.getElementById(RightClick.FlashContainerID).setCapture();
  54.             if(window.event.srcElement.id)
  55.             RightClick.Cache = window.event.srcElement.id;
  56.         }
  57.     },
  58.     /**
  59.      * Main call to Flash External Interface
  60.      */
  61.     call: function() {
  62.         document.getElementById(this.FlashObjectID).rightClick();
  63.     }
  64. }  

var RightClick = {      /**       *  Constructor       */       init: function () {          this.FlashObjectID = "customRightClick";          this.FlashContainerID = "flashcontent";          this.Cache = this.FlashObjectID;          if(window.addEventListener){               window.addEventListener("mousedown", this.onGeckoMouse(), true);          } else {              document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); }              document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}              document.getElementById(this.FlashContainerID).onmousedown = RightClick.onIEMouse;          }      },      /**       * GECKO / WEBKIT event overkill       * @param {Object} eventObject       */      killEvents: function(eventObject) {          if(eventObject) {              if (eventObject.stopPropagation) eventObject.stopPropagation();              if (eventObject.preventDefault) eventObject.preventDefault();              if (eventObject.preventCapture) eventObject.preventCapture();           if (eventObject.preventBubble) eventObject.preventBubble();          }      },      /**       * GECKO / WEBKIT call right click       * @param {Object} ev       */      onGeckoMouse: function(ev) {          return function(ev) {          if (ev.button != 0) {              RightClick.killEvents(ev);              if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {                  RightClick.call();              }              RightClick.Cache = ev.target.id;          }        }      },      /**       * IE call right click       * @param {Object} ev       */      onIEMouse: function() {          if (event.button> 1) {              if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {                  RightClick.call();               }              document.getElementById(RightClick.FlashContainerID).setCapture();              if(window.event.srcElement.id)              RightClick.Cache = window.event.srcElement.id;          }      },      /**       * Main call to Flash External Interface       */      call: function() {          document.getElementById(this.FlashObjectID).rightClick();      }  }

以下是as部分代码:


   1. package {
   2.     
   3.     import flash.display.*;
   4.     import flash.external.ExternalInterface;
   5.  
   6.     public classclass RightClick extends Sprite
   7.     {
   8.         
   9.         public function RightClick()
  10.         {
  11.             stage.scaleMode = StageScaleMode.NO_SCALE;
  12.             stage.align = StageAlign.TOP_LEFT;
  13.             
  14.             var methodName:String = "rightClick";
  15.             var method:Function = onRightClick;
  16.             ExternalInterface.addCallback(methodName, method);
  17.         }
  18.         
  19.         private function onRightClick():void {
  20.  
  21.             var mx:int = stage.mouseX;
  22.             var my:int = stage.mouseY;
  23.  
  24.             if(my> 0 && my <stage.stageHeight && mx> 0 && mx <stage.stageWidth) {
  25.                 // YOUR CODE HERE
  26.             }
  27.         }
  28.     }
  29. }  
分享到:
评论

相关推荐

    Flash+js禁用flash右键

    然而,Flash有一个特点,那就是用户可以通过鼠标右键点击Flash对象来访问其内置的上下文菜单,这可能导致内容被复制或者用户访问到不必要的设置。 禁用Flash右键菜单通常是通过Flash ActionScript实现的。...

    网页中屏蔽flash右键

    总的来说,屏蔽Flash右键菜单是一个需要跨平台(HTML、JavaScript和Flash)协作解决的问题。`RightClick_0.6.3`库提供了一个可能的解决方案,通过结合多种技术来达到目的。理解和应用这样的解决方案,有助于提升网页...

    flash彻底屏蔽右键

    这段代码会在舞台(stage)上添加一个事件监听器,当检测到右键点击时,调用`preventDefault()`方法阻止默认的右键菜单显示。 4. **局限性**:虽然这种方法可以防止初级用户的尝试,但它并不能完全阻止所有用户...

    禁止flash使用右键的代码

    标题“禁止flash使用右键的代码”涉及到的是Web前端开发中的一个特定问题,即如何防止用户在Flash内容上使用鼠标右键弹出默认的上下文菜单。在网页中,Flash对象有时会因为开发者的需求,不希望用户通过右键点击来...

    易语言源码易语言屏蔽超文本浏览框flash右键菜单源码.rar

    本压缩包“易语言源码易语言屏蔽超文本浏览框flash右键菜单源码.rar”提供了一段易语言编写的源代码,用于实现一个特定的功能:屏蔽超文本浏览框(WebBrowser控件)中的Flash内容的右键菜单。 在Windows应用程序...

    flex禁止鼠标右键源码

    压缩包中的`RightClickLib.swc`可能是一个库文件,它可能包含了预封装好的禁止右键功能,方便开发者直接引入到项目中使用。而`禁止鼠标右键.txt`文件很可能包含了更详细的说明或者额外的代码示例。 总之,禁止Flex...

    易语言屏蔽超文本浏览框flash右键菜单源码

    总的来说,这个源码提供了一种在易语言环境下,如何控制超文本浏览框中的Flash右键菜单的方法,对于想要定制浏览器体验或增强应用程序安全性的开发者来说,是一个很有价值的学习资源。实际使用时,还需要根据具体...

    禁用flash鼠标右键

    在Web开发中,禁用Flash的鼠标右键只是交互设计的一个方面。开发者还需要考虑用户体验,因为完全禁止右键操作可能会使某些用户感到困扰,尤其是那些依赖辅助功能的用户。因此,在实施这类功能时,应谨慎权衡利弊。 ...

    利用MFC彻底掉flash右键菜单

    利用mfc窗体屏蔽flash的右键菜单,并且添加自定义的右键菜单。 源码包含MFC源码与flash源码。两者缺一不可。 MFC源码用vs2008开发。flash源码用cs4、as3开发。 绝对原创!转载请标明出处!

    易语言源码易语言屏蔽超文本浏览框右键源码.rar

    本资源“易语言源码易语言屏蔽超文本浏览框右键源码.rar”包含了一个易语言编写的源代码,该源码主要用于实现屏蔽超文本浏览框(通常指的是Web浏览器控件)中的右键菜单功能。 在Windows应用程序开发中,超文本浏览...

    易语言源码易语言屏蔽FLASH框鼠标右键源码.rar

    总的来说,"易语言屏蔽FLASH框鼠标右键源码.rar"是一个关于易语言编程、事件处理和用户界面交互控制的实例,通过研究这个源码,你可以了解到易语言如何实现对特定控件的用户交互限制,增强对编程逻辑的理解。...

    屏蔽Flash右键信息的js代码

    然后使用JavaScript的`SWFObject`库来创建并插入Flash对象,其中`menu="false"`属性已经预设了禁止Flash自身的右键菜单。 在文档加载完毕后,我们调用`NoRightClick("testContent")`,将Flash容器的ID传递给`...

    易语言屏蔽超文本浏览框flash右键菜单源码-易语言

    在这个“易语言屏蔽超文本浏览框flash右键菜单源码”项目中,我们可以深入理解易语言在处理用户界面(UI)交互和浏览器控件时的一些高级技巧。 首先,我们要了解的是“超文本浏览框”。在易语言中,超文本浏览框是...

    用JS实现右键的复制,拈帖和剪切功能

    这段代码首先选中文本框中的所有文本,然后创建一个文本范围对象,并调用 `execCommand` 方法执行复制操作。这种方法适用于非IE浏览器。 3. **HTML 结构**: ```html 要复制的文本" id="textToCopy" /&gt; 复制" ...

    Flexpaper2.2.1 去水印、去打印、去右键菜单

    它的去水印、无打印和去右键菜单特性,使得内容发布者能够更好地保护他们的数字资产,同时也确保了用户能够在一个流畅且专注的环境中阅读内容。对于那些重视内容安全和用户体验的组织来说,这是一个理想的工具。

    flash与PB的 通讯

    描述中还提到了“禁止flash的右键弹出菜单”,这是通过编写特定的代码来实现的,目的是为了保持应用程序的统一性和专业外观。 提到的"FlashAntiMenu.dll"可能是一个动态链接库,用于禁用Flash的默认右键菜单,这是...

    Flash常用代码集锦

    预先创建一个名为"a"的空MC,并确保导入时保持相同名称。 4. 鼠标交互:`on (rollover)`和`on (release)`事件可用于响应鼠标滚过和释放,控制动画播放到特定帧,例如`gotoAndPlay(10)`和`gotoAndPlay(1)`。 5. ...

    在Excel中插入Flash时钟的步骤

    首先,你需要一个SWF格式的Flash时钟文件。这种文件通常可以从互联网上下载获得,或者使用Adobe Flash等软件自己制作。确保你已经有一个有效的SWF文件。 2. 插入对象: 打开Excel,选择你想要插入Flash时钟的工作表...

    仿百度文库,在线阅读,禁止下载,flash office

    "仿百度文库,在线阅读,禁止下载,flash office"这一项目,旨在创建一个类似于百度文库的在线文档查看平台,让用户可以在网页上直接预览文档内容,而无需下载到本地。这个平台特别强调了对文档的保护,通过技术手段...

    Chrome插件Enable Copy破解网站禁止复制插件

    1.Enable Copy 插件可以破解掉网页中因网站开发者使用JavaScript脚本启动的网页禁止复制功能,如果是别的方式(比如网页上的文本使用flash插件载入来禁止用户复制、右键等功能)的时候...

Global site tag (gtag.js) - Google Analytics