Rev. 2.73

flash-3.gif

Paulius Uza씨는 자바스크립트를 이용하여 플래시의 마우스 오른쪽 버튼을 커스토마이즈하는 프로젝트를 Google Code에 포스팅했습니다. 자바스크립트로 마우스 오른쪽 버튼의 이벤트를 가로채 플래시 오브젝트로 전달하는 원리입니다. 이로서 플래시는 조금 더 사용자경험이 풍부한 인터페이스를 제공할 수 있겠네요. 플래시로 만들어진 컨텐츠인지 구분하기 위해서 마우스 오른쪽 버튼만으로 확신해서는 안되겠습니다.

var RightClick = {
  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;
    }
  },
  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();
    }
  },
  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;
      }
    }
  },
  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;
      }
    }
  },
  call: function() {
    document.getElementById(this.FlashObjectID).rightClick();
  }
};

Comments

foo.gif

Prototype을 기반바하는 또다른 라이브러리인 Foo 프레임웍이 출현했습니다. Foo는 신속한 리치 인터넷 애플리케이션 개발을 목적으로 출시된 자바스크립트 프레임웍입니다. 어도비사의 Spray와 유사한 문법을 사용하여 개발한다고 합니다. 초기 예제들은 빈약한 느낌을 지울수 없지만, Scriptaculous에 버금가는 강력한 UI 개발 솔루션으로 자리잡기를 기대합니다.

Comments