> ## Content Index
> Fetch the complete content index at: https://blog.k3s.9zf.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# 一个禁止flash右键的方法
- URL: https://blog.k3s.9zf.net/-e4-b8-80-e4-b8-aa-e7-a6-81-e6-ad-a2flash-e5-8f-b3-e9-94-ae-e7-9a-84-e6-96-b9-e6-b3-95/
- Published: 2009-05-01T08:50:11.000Z
- Updated: 2009-05-01T08:50:11.000Z
- Author: liu
- Tags: 精品网文, Web, #wordpress, #Import 2026-10-29 06:11

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

> 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部分代码：

> package {
> 
> import flash.display.\*;  
> import flash.external.ExternalInterface;
> 
> public classclass RightClick extends Sprite  
> {
> 
> public function RightClick()  
> {  
> stage.scaleMode = StageScaleMode.NO\_SCALE;  
> stage.align = StageAlign.TOP\_LEFT;
> 
> var methodName:String = “rightClick”;  
> var method:Function = onRightClick;  
> ExternalInterface.addCallback(methodName, method);  
> }
> 
> private function onRightClick():void {
> 
> var mx:int = stage.mouseX;  
> var my:int = stage.mouseY;
> 
> if(my> 0 && my 0 && mx // YOUR CODE HERE  
> }  
> }  
> }  
> }