LoginSignup
0
0

More than 5 years have passed since last update.

FlexでListを使った時のマウスホイールの挙動制御 その2

Posted at

FlexでListを使った時のマウスホイールの挙動制御
でかいたスクリプトだとChromeのFlashPlayerがPPAPIの場合に正しく動作しなかった。

そこでchromeの場合のみ違う方法でマウスホイールの挙動制御を行う

as3
// ブラウザのスクロールを有効にする(swfが非アクティブになった時)
ExternalInterface.call("browserScrollEnabled", true);
// ブラウザのスクロールを無効にする(swfがアクティブになった時)
ExternalInterface.call("browserScrollEnabled", false);

javascript
// ブラウザがchromeかどうかの判定フラグ
var ua = navigator.userAgent.toLowerCase();
var isChrome = ua.indexOf('chrome') != -1 && ua.indexOf('opr') == -1;
// ブラウザのスクロール有効フラグ
var browserScroll = true;

init();

/**
 * 初期化処理
 */
function init(){
    alert(navigator.userAgent.toLowerCase());
    if(!isChrome){
        if(window.addEventListener){
            alert("addEventListener")
            window.addEventListener('DOMMouseScroll', mouseScroll, false);
        }else if(window.attachEvent){
            window.attachEvent('onmousewheel', mouseScroll);
        }
        window.onmousewheel = mouseScroll;
        document.onmousewheel = mouseScroll;
    }else{
        alert("init isChrome = " + isChrome);
    }
}

/**
 * DOMMouseScrollイベント
 * @param event
 */
function mouseScroll(event){
    if(!browserScroll){
        // ブラウザのスクロールを無効化する
        if(!event){
            event = window.event;
        }
        if(event.preventDefault){
            event.preventDefault();
        }
        event.returnValue = false;
    }
}

/**
 * ブラウザスクロールを有効にする
 * @param flg true:ブラウザスクロール有効 false:ブラウザスクロール無効
 */
function browserScrollEnabled(flg){
    if(isChrome){
        if(flg){
            document.documentElement.style.overflowY = "auto";
        }else{
            document.documentElement.style.overflowY = "hidden";
        }
    }else{
        browserScroll = flg;
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0