파이어팍스에 개발자를 괴롭히는 onmousedown 이벤트 핸들러 관련 버그가 있는 것 같네요. 블록

해당 소스를 보시려면 아래의 링크를 클릭하시구요

http://bit.ly/1hVJNUQ

증상은 onmousedown 이벤트 핸들러에서 window.open() 함수를 호출하게 되면 홈페이지 클릭에선 부모창의 페이지가 드래그 되는 현상이 있고 회원정보나 관리자모드 회원정보 변경 창이 열리게 되면 focus가 새창에 맞춰지지 않고 부모창에 맞춰지는 현상입니다.

이 문제를 해결하려고 구글링을 하면서 나름 소스를 고쳐봤는데 도무지 해결법이 나오지를 않더군요. 이거 버그 맞죠?

덧글

  • killofki 2014/01/26 15:01 # 답글

    드래그현상은 onmousedown 대신 onmouseup 을 사용하면 될 것 같구요..

    팝업포커스는
    http://stackoverflow.com/questions/2965754/set-the-focus-of-a-popup-window-everytime
    요런 답변들이 검색되긴 합니다만..
    버그라기보다는, firefox 특성이라고 봐야할겁니다.

    가능하면 onepage 나 link 로 대체되길 바란다고 할까요 (팝업 위치 조정까지 스크립트 넣어야하나 = =;.. )
  • 희망의빛™ 2014/01/27 07:04 #

    onmouseup 이벤트 핸들러는 전혀 동작을 하지 못하구요 링크하신 곳의 popitup() 함수도 적용해 보았으나 똑같이 포커스가 먹지 않습니다.
  • killofki 2014/01/27 16:44 #

    요거 때문에 onmouseup 작동 안되는 건 아니구요..?
    onmousedown="ZB_layerAction('zbLayer1','hidden',event)"
  • 희망의빛™ 2014/01/27 20:59 #

    말씀하신 onmousedown은 이름을 클릭할 때 보이는 레이어 뿌려주는 부분이고 제가 건드린 onmousedown은 이름을 클릭한 후 보이는 서브메뉴에서 부모 페이지 드래그 버그와 관련있는 '홈페이지' 와 기타 '회원정보' , '회원정보수정' 에서 사용된 onmousedown 핸들러를 onmouseup 으로 바꿔 적용해본 것입니다. 이렇게 바꿔보면 전혀 이벤트가 동작하지 않습니다. 이건 말씀하신 onmousedown 클릭 부분과 상관이 없잖아요.
  • killofki 2014/01/28 14:52 #

    그게말이죠.. onclick 이벤트를 예시로 든다면

    onmousedown -> onmouseup -> onclick
    형태로 진행되는거라서요..
    (event bubble 까지는 일단 생각하지 않았습니다.)

    <div id=clickReceiver onmousedown=f1(); onmouseup=f2(); onclick=f3(); style="width:150px; height:100px; overflow:hidden; background-color:gray;"></div>
    <div id=clickReceiver2 onmousedown=f4(); onmouseup=f5(); onclick=f6(); style="width:150px; height:100px; overflow:hidden; background-color:blue;"></div>
    <div id=output></div>

    <script>
    var f1, f2, f3;
    (function(){
    var out='', e, f;

    function ff(v) {
    return function(){
    if (!e) e=document.getElementById('output');
    out+=v+' '; e.innerHTML=out; };
    }

    f1=ff('down1');
    f2=ff('up1');
    f3=ff('click1');


    f4=function(){
    if (!e) e=document.getElementById('output');
    out+='down2 '; e.innerHTML=out; ;

    if (!f) f=document.getElementById('clickReceiver2');
    f.style.height='1px';
    }
    f5=ff('up2');
    f6=ff('click2');

    }());
    </script>

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색