2012-10-16 2 views
2

내가하고있는 JQuery Mobile 앱은 소프트 키보드가 시작될 때 이상한 경향이있다. 나는 해결책을 implmeeted했고 멋지게 작동하지만 jquery.mobile-1.2.0.js를 직접 편집해야했습니다. jQuery Mobile을 확장하는 jquery.mobile.customizations.js 파일에서 변경 사항을 유지하는 것이 좋습니다.

은 내가 성공하지 다음을 수행하려고 :

delete $.mobile.getScreenHeight; 
$.mobile.last_width = null; 
$.mobile.last_height = null; 
$.mobile.getScreenHeight = function() 
{ 
    // My modified version 
} 

$.mobile.getScreenHeight에 경고 문을 추가, 플러스 원래 $.mobile.getScreenHeight. 내 사용자 지정 메서드의 경고가 해고 된 것을 보았지만 가끔은 원래 함수에서도 경고를 발생시킵니다.

누군가가 $ .mobile에서 메소드를 재정의하고 두 개의 새 속성을 추가하는 적절한 방법을 알고 있습니까?

@elclanrs - 나는 행운에 아래의 코드를 구현하기 위해 노력했습니다 :

업데이트 (원래 문제에 대한 전체 세부 사항은 window.resize due to virtual keyboard causes issues with jquery mobile에있다). 나는 또한 두 번째와 세 번째 매개 변수를 교환하려고 시도했습니다. 코드를 실행할 때마다 확장 된 getScreenHeight가 발생하지만 기본 getScreenHeight가 발생합니다. (나는 원래 getScreenHeight을 비게과 생각에 대한 내. 그 경고해야 결코 화재.

열기를 경고를 넣어!

$.mobile = $.extend({}, $.mobile, { 
    last_width: null, 
    last_height: null, 
    getScreenHeight: function() { 
     // My code... 
    } 
}); 
+0

원본에서 lookin 'last_width' 및 last_height'을 찾을 수 없지만 작동해야하는 것과 같은'getScreenHeight'를 재정의했습니다 ... – elclanrs

+0

예, 명확히하기 위해 last_width 및 last_height 속성을 추가하고 있습니다. getScreenHeight()를 재정의하고 싶습니다. 위에서 보았던 방법은 예상대로 작동하지 않았습니다. 그것은 내 사용자 정의 기능과 원래 기능을 모두 해고했다. – Anthony

+0

삭제할 필요없이 그냥 무시할 수 있습니다. '$ .extend ({getScreenHeight : function() {...}}, $ .mobile)' – elclanrs

답변

0

기분을 상하게 라인이 폐쇄 내에서 현재의 정의를 배치 getScreenHeight = $.mobile.getScreenHeight; 것 같다 . resetActivePageHeight 기능을 위해 나는 파일을 편집하지 않고 직접이 메소드를 오버라이드 (override)하는 것이 가능 모르겠어요,하지만 당신은 다운 스트림 그것을 떨어져 머리를 할 수 있습니다 자신의 정의

//simply set the active page's minimum height to screen height, depending on orientation 
    function resetActivePageHeight() { 
    var aPage = $("." + $.mobile.activePageClass), 
     aPagePadT = parseFloat(aPage.css("padding-top")), 
     aPagePadB = parseFloat(aPage.css("padding-bottom")), 
     aPageBorderT = parseFloat(aPage.css("border-top-width")), 
     aPageBorderB = parseFloat(aPage.css("border-bottom-width")); 

    aPage.css("min-height", getScreenHeight() - aPagePadT - aPagePadB - aPageBorderT - aPageBorderB); 
    } 


    //set page min-heights to be device specific 
    $(document).bind("pageshow", resetActivePageHeight); 
    $(window).bind("throttledresize", resetActivePageHeight); 

resetActivePageHeight 다음 unbindbind 다시 시도하면 트릭을 수행 할 수 있습니다. 좀 지저분 해.

관련 문제