복붙노트

[JQUERY] Fancybox는의 jQuery v1.9.0로 일을하지 않는 [f.browser가 정의되어 / 부동산 'MSIE'을 읽을 수 없습니다]

JQUERY

Fancybox는의 jQuery v1.9.0로 일을하지 않는 [f.browser가 정의되어 / 부동산 'MSIE'을 읽을 수 없습니다]

해결법


  1. 1.http://bugs.jquery.com/ticket/13183 그 넘김 Fancybox 스크립트를 : 그것은 jQuery를에서 문제를 여기에보고있는 것 같다.

    http://bugs.jquery.com/ticket/13183 그 넘김 Fancybox 스크립트를 : 그것은 jQuery를에서 문제를 여기에보고있는 것 같다.

    또한 상기 참조 https://github.com/fancyapps/fancyBox/issues/485를 확인한다.

    의 jQuery v1.8.3의 해결 롤백 같이 하나의 jQuery 버그가 수정되거나 Fancybox이 패치된다.

    UPDATE (2013 년 1 월 16) : Fancybox의 v2.1.4이 출시되었습니다 지금은의 jQuery v1.9.0와 함께 잘 작동합니다.

    fancybox를 들어 당신은 여전히의 jQuery v1.8.3 롤백 또는 마누의 대답 @으로 지적 OUT으로 마이그레이션 스크립트를 적용해야 v1.3.4-.

    UPDATE (2013 년 1 월 17 일) : 해결 방법 Fancybox의 v1.3.4의 사용자를위한 :

    그것은 다음과 같은의 jQuery v1.9.0 작업을 만들 수있는 fancybox의 JS 파일을 패치 :

    또는 여기에서 이미 패치 버전을 다운로드 (감사 여분의 폐쇄 브래킷을 지적 fairylee ... 2013년 3월 19일 업데이트)

    참고 :이 그러나 그대로 작동 비공식 패치 및 Fancybox의 저자에 의해 지원되지 않습니다. 당신은 당신의 자신의 위험에 그것을 사용할 수 있습니다)

    선택적으로, 다소의 jQuery v1.8.3 롤백 또는 마누의 대답 @으로 지적 OUT으로 마이그레이션 스크립트를 적용 할 수 있습니다.


  2. 2.안녕하세요이는 jQuery를 => 1.9.0의 새 버전 때문이다

    안녕하세요이는 jQuery를 => 1.9.0의 새 버전 때문이다

    당신은 업데이트를 확인할 수 있습니다 : http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/

    jQuery.Browser이되지 않습니다. 당신은 마이그레이션 스크립트를 추가하여 최신 버전을 유지할 수 있습니다 : http://code.jquery.com/jquery-migrate-1.0.0.js

    대체 :

    <script src="http://code.jquery.com/jquery-latest.js"></script>
    

    로 :

    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.0.0.js"></script>
    

    페이지와 작업한다.


  3. 3.글로벌 이벤트도되지 않습니다.

    글로벌 이벤트도되지 않습니다.

    여기에 브라우저 및 이벤트 문제를 해결하는 패치가있다 :

    --- jquery.fancybox-1.3.4.js.orig   2010-11-11 23:31:54.000000000 +0100
    +++ jquery.fancybox-1.3.4.js    2013-03-22 23:25:29.996796800 +0100
    @@ -26,7 +26,9 @@
    
            titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
    
    -       isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
    +       isIE = !+"\v1",
    +       
    +       isIE6 = isIE && window.XMLHttpRequest === undefined,
    
            /*
             * Private methods 
    @@ -322,7 +324,7 @@
                loading.hide();
    
                if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
    -               $.event.trigger('fancybox-cancel');
    +               $('.fancybox-inline-tmp').trigger('fancybox-cancel');
    
                    busy = false;
                    return;
    @@ -389,7 +391,7 @@
                            content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
                        };
    
    -                   $.event.trigger('fancybox-change');
    +                   $('.fancybox-inline-tmp').trigger('fancybox-change');
    
                        content
                            .empty()
    @@ -612,7 +614,7 @@
                }
    
                if (currentOpts.type == 'iframe') {
    -               $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
    +               $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + (isIE ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
                }
    
                wrap.show();
    @@ -912,7 +914,7 @@
    
            busy = true;
    
    -       $.event.trigger('fancybox-cancel');
    +       $('.fancybox-inline-tmp').trigger('fancybox-cancel');
    
            _abort();
    
    @@ -957,7 +959,7 @@
                title.empty().hide();
                wrap.hide();
    
    -           $.event.trigger('fancybox-cleanup');
    +           $('.fancybox-inline-tmp, select:not(#fancybox-tmp select)').trigger('fancybox-cleanup');
    
                content.empty();
    

  4. 4.경우에는 사람이 아직 여기 당신이 만드는해야 다른 변화는 3.0 jQuery로 기존 fancybox를 지원해야합니다 :

    경우에는 사람이 아직 여기 당신이 만드는해야 다른 변화는 3.0 jQuery로 기존 fancybox를 지원해야합니다 :

    .unbind ()는 지원되지 않습니다

    .OFF와 .unbind의 모든 인스턴스를 교체

    .removeAttribute ()는 함수가 아니다

    변경 라인 580-581 대신) jQuery의 .removeAttr를 (사용합니다 :

    오래된 코드 :

    580: content[0].style.removeAttribute('filter');
    581: wrap[0].style.removeAttribute('filter');
    

    새로운 코드 :

    580: content.removeAttr('filter');
    581: wrap.removeAttr('filter');
    

    다른 패치와 함께이 위 내 호환성 문제를 해결 언급했다.

  5. from https://stackoverflow.com/questions/14344289/fancybox-doesnt-work-with-jquery-v1-9-0-f-browser-is-undefined-cannot-read by cc-by-sa and MIT license