2010-07-27 2 views
1

나는 자바 스크립트 기반의 스크롤 위젯 Thingy ™를 가지고있다. 그것이하는 일 중 하나는 고정 된 높이 div을 만들고 그것을 overflow: auto이라고합니다.스크롤바를 사용할 수없는 경우 (예 : 모바일 브라우저) 자바 스크립트에서 감지 할 수 있습니까?

모바일 Safari (및 기타 모바일 브라우저)의 Alas overflow: auto;에는 스크롤바가 표시되지 않습니다. "겹 (fold)"아래의 모든 콘텐츠는 우연히 만 찾을 수 있습니다.

을 브라우저에서 감지하지 않고이 아닌 자바 스크립트에서이를 감지하는 방법이 있습니까? 예 :

if (there is a scrollbar) { 
    /* give me a fixed height and a scrollbar */ 
} else { 
    /* Do something more suited to this situation */ 
} 
+0

나는 쉬운 해결책이 없다고 생각합니다. * 가장 깨끗한 솔루션은 브라우저 감지 기능을 사용하여 하나의 구성 요소가 아닌 페이지의 표준 버전을 모바일로 제공하는 것입니다.하지만이 방법이 쉽지는 않습니다. Google 검색 중에 뭔가를 보았습니다.하지만 얼마나 도움이되는지 확실하지 않습니다 ... http://cubiq.org/scrolling-div-on-iphone-ipod-touch –

+0

이유 I 브라우저 탐지에 들어가고 싶지 않아 유지 보수입니다. 필자는 새로운 모바일 장치가 출시 될 때마다이를 업데이트해야 할 필요가없는 "적합하고 잊어 버린"해결책을 원합니다. –

답변

3
나는 단지 더러운 트릭에 의존 생각할 수

:

  1. 50 × 50 상자를 텍스트
  2. 읽기 상자 내부 크기
  3. 설정 상자
  4. overflow: auto에 홍수 상자 만들기 : 경우 50 × 50를 , 무엇인가 잘못되었습니다
  5. 변수 결과에 결과 저장 및 소실 상자

... 실제로 내부 크기를 측정하는 방법이 있지만 스크롤바는 제외됩니다.

어쨌든 무서운 알고리즘인데, 수백 가지가 잘못 될 수 있습니다. 생각해보십시오.

+0

해키만큼이나 잘 될 수도 있습니다. clientWidth 및 clientHeight는 데스크탑에서 스크롤 막대를 고려합니다. 이제 일부 모바일 장치에서 일부 테스트를 수행해야합니다. –

+0

... iOS 3.2 및 4.0 기기에서 작동합니다. –

+0

그래서이 아이디어를 바탕으로 http://thinkdrastic.tumblr.com/post/870842095/을 만들었습니다. 일하는 것 같습니다. 누구든지 의견이 있으면 알려 주시기 바랍니다! 다시 한번 감사드립니다. –

관련 문제