iPad판 기능으로, 스크롤량의 취득·설정을 할 수 없는 문제의 일례

IE판의 패키지로 사용되고 있는 기능을, iPad판에서도 실현하기 위해서, 마찬가지로 스크롤량의 취득·설정의 기술을 했지만, 스크롤량이 잡히지 않고 0을 돌려, 또, 잡히게 되어 에서도 설정 시에도 고전한 이야기.


일반적인 스크롤량 획득



첫째, 스크롤 된 금액을 얻기위한 설명은 일반적? 나노하를 조사하면 이 정도는 곧 나온다.

■FireFox, IE
document.documentElement.scrollLeft  //横軸のスクロール量
document.documentElement.scrollTop   //縦軸のスクロール量

■ Chrome, Safari
document.body.scrollLeft  //横軸のスクロール量
document.body.scrollTop   //縦軸のスクロール量

잘하지 않는 원인은?



일반적인 방법에서는 0을 돌려, 여러가지 요소나 방법으로 시험해도 취할 전망이 서지 않았다.
요소의 지정 방법이 원인이 아니라고 생각해, 에러를 중심으로 구그해 가는 가운데 내 문제에 해당할 것 같은 기사를 발견했다. 그 결과는 다음 기사와 동일한 원인이었다.
document.body.scrollTop이 항상 0을 반환하는 수수께끼를 살펴 보았습니다.

그렇다면 어떻게해야합니까?



스크롤 대상의 아이 요소에 id를 지정해, 그 id로부터 취득·설정하는 것으로 해결했다.

우선, 스크롤 대상의 범위의 태그에 id로 취득하기 위한 이름을 설정. 이번은 id="scrollList" 라고 했다.
그것을 취득하는 처리는 다음과 같다.
/* 横軸、縦軸の取得 */
function getPositon(){
    var left = document.getElementById("scrollList").scrollLeft;
    var top = document.getElementById("scrollList").scrollTop;

    return [left,top];
}

위의 설정에서 스크롤 량을 얻을 수 있습니다.
그러나, 이번에는, 그 스크롤량의 개소로 이동하지 않는 문제가 발생했다.
설정시에 document.getElementById("scrollList").scrollLeft = left; 에서는 취득할 수 없고, 이하와 같이 하는 것으로, 이동할 수 있었다.
/* 再表示後のスクロール位置の設定 */
function movePosition(left ,top ){
    var listPosition= document.getElementById("scrollList");
    listPosition.scrollLeft = left;
    listPosition.scrollTop = top;
}

IE판에서는, getElementById 의 지정에 직접 대입할 수 있었지만, iPad판에서는 한 번, 변수에 세트 하지 않으면 대입할 수 없는 것 같다.

좋은 웹페이지 즐겨찾기