网站位置:首页 >> 相关文档
网页FLASH动画禁止右键菜单的方法?
在做一个实验时遇到一个禁止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();
  }
  }
  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) {

 

Time.2009-8-24     来源.http://www.gcity.com.cn     编辑.上海红提城信息科技有限公司    
© 2002-2008 www.Gcity.com.cn ICP06055129咨询热线:4008207959     021-33606181(红提城信息科技)