2013-06-07 25 views
14

Tôi đã cố gắng thực hiện kịch bản java iscroll cho ứng dụng của tôi như một quá trình khắc phục hậu quả đối với CSS position: fixed điều đó không làm việc trong android 2 và 3 phiên bản sử dụng cordova 2.1.0làm thế nào để sử dụng javascript iscroll trong khoảng cách điện thoại?

Tôi đã copy javascript của iscroll-lite từ here

mã html

<div id="wrapper" class="wrapper"> 
<div id="wrapper-container" class="wrapper-container"> 
    <div id="header" class="header"> 
    <div id="header_title" class="header_title"> </div> 
    <div id="abc" class="abc"><img src="img/abc.png""/>      </div> 
</div> 
<div id="images" class="images"><img name="slide" src="img/abc.png" width=100%; /> 
</div> 
<div id="description" class="description"> 
<div id="title" class="title"> 
    <h1><strong></strong></h1> 
</div> 
<div id="desc" class="desc"> 
</div> 
</div> 

<div id="footer" style="background-image:url(img/bar.png);" class="footer"> 
<div id="footer_text" class="footer_text">footer_text</div> 
<div id="image" class="image noSelect"><img src="img/info.png" onclick="info()"/></div> 
</div> 
</div> 

Nội dung của thẻ desc sẽ tràn

CSS

.wrapper 
{ 
    position: absolute; width:auto; margin:0 auto; height:100%; overflow: hidden; 
} 
.wrapper_other 
{ 
    width:auto; margin:0 auto; height:100%; overflow: hidden; 
} 
.wrapper_container 
{ 
    width:100%; margin:0 auto; font-family:Arial, Helvetica, sans-serif; 
} 
.header 
{ 
    float:left; height:100%; min-height:100%; margin:0%; width:96%; padding:3% 2% 0; 
} 
.header_title 
{ 
    float:left; padding:0%; margin:0%; height:100%; min-height:100%; font-size:22px; color: #FFFFFF; text-align:center; font-weight: bold; width:80%; 
} 

.images 
{ 
    position:relative; width:100%; 
} 
.description 
{ 
    float:left; width:100%; overflow:auto; height:100%; 

} 
.title 
{ 
    width:85%; font-weight:bold; float:left; font-size:20px; margin-top:3%; margin-bottom:2%; margin-left:5%; color:#FFFFFF; 
} 
.desc 
{ 
     width:90%; font-size:15px; margin-left:5%; margin-right:5%; float:left; color: #FFFFFF; overflow:auto; text-align:justify; line-height:18px; padding:0px 0px 40px 0px; 
} 
.desc p 
{ 
     margin-top:0; 
} 
.footer 
{ 
    width:100%; position:absolute; bottom:0; font-size:11px; color:#FFFFFF; text-align:center; height:30px; 
} 
.footer_text 
{ 
    text-indent:1%; float:left; text-align:center; width:75%; margin-top:2%; 
} 
.info 
{ 
    width:25%; float:right; padding-top:1%; 
} 

SỬ DỤNG iscroll

<script type="text/javascript" charset="utf-8" src="iscroll.js"></script> 
<script type="text/javascript" charset="utf=8" src="cordova-2.1.0.js"></script> 


var myScroll; 
document.addEventListener("deviceready", onDeviceReady, false); 
function scroll() 
{ 
myScroll = new IScroll('.wrapper', { scrollX:false , scrollY:true}); 
} 
---- 
---- 
function onDeviceReady() 
{ 
    scroll(); 
    ---- 
    ---- 

On di chuyển, tôi chỉ nhận được như sau

W/webview(3101): Miss a drag as we are waiting for WebCore's response for touch down. 

VẤN ĐỀ:

Đó là không scrolling.If ở tất cả nó sau khi nỗ lực rất lớn vào nó nhưng, nó cuộn chỉ once.I quay trở lại trang chính và gửi lại nó không cuộn chút nào.

Xin vui lòng, Hướng dẫn tôi !!

EDIT: điều này tôi đã thử trong các kết hợp khác nhau..đặt tất cả các div như thẻ li ... css không hiệu quả. sau đó sử dụng thẻ li trong mỗi div. Không sử dụng ... CNTT không cuộn:

<div id="wrapper"> 
<div id="scroller"> 
<ul> 
    <div id="header " class="header "> 
    <div id="header_title" class="header_title"> </div> 
    <div id="xyz" class="xyz"><img src="img/xyz.png" onClick="xyz()"/></div> </div> </ul> 

<ul> 
     <div id="images" class="images"><img name="slide" src="img/banner1.png" width=100%; /> 
    </div> 
</ul> 

<ul> 
    <div id="param" class="param"> 
    <div id="abc" class="abc noSelect"> </div> 
     <div id="def" class="def noSelect" > </div> 
     <div id="ghi" class="ghi noSelect" > </div> 
     <div id="ijk" class="ijk noSelect" > </div> 
    </div> 
</ul> 

<ul> 
    <div id="description" class="description"> 
     <div id="title" class="title"> 
    <h1><strong><li></li></strong></h1> 
     </div> 

    <div id="desc" class="desc"> 
    <p><li></li> </p> 
    </div> 
</div> 

</ul> 
+0

Ai đó thường giúp chúng tôi !!! xin vui lòng ... xin vui lòng – elegance

Trả lời

15

Bạn dường như không theo cấu trúc mà iScroll yêu cầu. Trang iScroll đề cập cụ thể (chú ý chữ in đậm):

Cấu trúc iScroll tối ưu là:

<div id="wrapper"> 
    <ul> 
     <li></li> 
     ... 
     ... 
    </ul> 
</div> 

Trong ví dụ này các yếu tố UL sẽ được cuộn. IScroll phải là được áp dụng cho trình bao bọc của vùng cuộn.

Quan trọng: chỉ con đầu tiên của phần tử trình bao bọc sẽ là được cuộn. Nếu bạn cần thêm các yếu tố bên trong scroller bạn có thể sử dụng cấu trúc sau:

<div id="wrapper"> 
    <div id="scroller"> 
     <ul> 
      <li></li> 
      ... 
      ... 
     </ul> 

     <ul> 
      <li></li> 
      ... 
      ... 
     </ul> 
    </div> 
</div> 

Trong ví dụ này các yếu tố scroller sẽ được cuộn (cùng với hai ULS).

Bạn có:

<div id="wrapper" class="wrapper"> 
    <div id="wrapper-container" class="wrapper-container"> 
    ... head ... 
    </div> 

    ... (your main div here) ... 
</div> 

Vì vậy div chính của bạn sẽ không được cuộn bởi iScroller, bạn chỉ làm cho div tiêu đề cuộn. Có một cái nhìn tại iScroll demo và kiểm tra nó ra đầu tiên ... nó hoạt động OK cho thiết bị của bạn? Nếu có, hãy cố gắng làm theo cấu trúc của nó.

+0

Ohh ... Vì vậy, Sir, tôi nên đặt tiêu đề của tôi, header_title, ... vv thẻ trong '

' định dạng? – user

+0

Vâng, đó là những gì tác giả iScroll gợi ý như một cấu trúc HTML để iScroll có thể được sử dụng. Xin vui lòng tham khảo các trang iScroll và các ví dụ ở đó để biết thêm thông tin –

+0

Sir các bản demo đang làm việc trên thiết bị cần phải kiểm tra xem nó ra với codet của tôi.No Sir, tôi đã cố gắng cho li cho mỗi div ... tôi đã nhận lỗi này trong dreamweaver 'Thẻ:" div "không được phép trong:" html "Chỉ được phép trong: applet, blockquote, body, button, center, dd, del, div, fieldset, form, iframe, ins, li, map , noframes, noscript, object, td, th.' – user

8

Trong mã tập lệnh bạn đã đăng, tôi đã tìm thấy lỗi. Tôi không biết liệu sai lầm này có sẵn trong tập tin thực tế của bạn hay không. Nhưng hãy nghĩ để chia sẻ cái đầu tiên.

Đây là mã tập lệnh của bạn.

myScroll = new IScroll ('. Wrapper', {scrollX: false, scrollY: true});

Sai lầm tôi đã tìm thấy

  • .wrapper là tên CSS quy tắc. Bạn tốt hơn để vượt qua ID tại đây. Giả sử ID của bạn là iScrollWrapper rồi bật cuộn ở định dạng sau.

myScroll = new IScroll ('iScrollWrapper', {scrollX: false, scrollY: true});

Bây giờ sẽ thấy (định dạng HTML) tốt nhất DOM structure cho iScroll mà sẽ không gặp rắc rối bạn và vẫn W3C valid

Lựa chọn 1

<div id="iScrollWrapper" class="****** IMPORTANT_POINT_1 ******"> 
    <ul> 
     <li> 
      <YOUR_REMAINING_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED> 
     </li> 
    </ul> 
</div> 

Lựa chọn 2

<div id="iScrollWrapper" class="****** IMPORTANT_POINT_1 ******"> 
    <ul> 
     <li> 
      <YOUR_ONE_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED> 
     </li> 
     <li> 
      <YOUR_ANOTHER_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED> 
     </li> 
     <li> 
      <YOUR_ANOTHER_DOM_STRUCTURE_IN_THE_WAY_YOU_NEED> 
     </li> 
    </ul> 
</div> 

Đầu tiên bạn nghĩ bạn phải làm là

****** IMPORTANT_POINT_1 ****** 

Yếu tố mà bạn đính kèm iScroll nên có không tĩnh, loại vị trí không cố định (có thể sử dụng 'relative' hoặc 'absolute'). yếu tố đó nên có height trong pixel (Nếu bạn có min-height hoặc max-height nhưng không **height**iScroll sẽ nói lời xin lỗi. Nó sẽ không làm việc)

Bây giờ sẽ thấy làm thế nào bạn có thể đính kèm iScroll.

cách tốt của gắn iScroll là như sau (Đây là những gì tôi đã học được khi tôi áp dụng iScroll cho các yếu tố)

Nếu bạn đang sử dụng Single Page Application (SPA) sau đó

if('undefined' != typeof iScrollerObject){ 
    iScrollerObject.destroy(); 
} 
iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */}); 

Nếu bạn thực hiện iScrollerObject như thành viên của bạn biến trong ứng dụng SPA sau đó sử dụng

var _this = this; 
if(null != _this.iScrollerObject){ 
    _this.iScrollerObject.destroy(); 
} 
_this.iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */}); 

Đối với norma l trang trình duyệt.

var iScrollerObject = new iScroll('iScrollWrapper',{/* OPTIONS_GOES_HERE */}); 

Nếu bạn tự động cập nhật các nội dung sau đó sử dụng checkDOMChanges : true trong lựa chọn của bạn. Nếu vẫn không cập nhật được cuộn cho thay đổi DOM động thì sau khi bạn hoàn thành cuộc gọi thay đổi DOM động đó iScrollerObject.refresh();

Tôi đã chia sẻ những gì tôi đã học được về iScroll theo kinh nghiệm của tôi. Nếu bạn cần bất kỳ xin vui lòng cho tôi biết. Hãy nhớ rằng bạn đang sử dụng phiên bản iScroll lite thực sự có ít tính năng hơn tiêu chuẩn iScroll4. Nếu bạn muốn sử dụng iScroll phiên bản, hãy truy cập iScroll4.