2012-07-06 23 views
24

Trình duyệt Android, kể từ 2.2, hỗ trợ định vị cố định, ít nhất trong một số trường hợp nhất định như khi tính năng chia tỷ lệ bị tắt. Tôi có một tệp HTML đơn giản không có JS, nhưng vị trí cố định trên ba điện thoại Samsung mà tôi đã thử chỉ đơn giản là sai. Thay vì định vị cố định đúng, tiêu đề cuộn ra khỏi chế độ xem sau đó bật lại vào vị trí sau khi cuộn xong.Bật tính năng định vị cố định thực sự trên các trình duyệt Android của Samsung

Điều này không xảy ra trên trình mô phỏng Android SDK cho bất kỳ cấu hình nào tôi đã thử nghiệm (2.2, 2.3, 2.3 x86, 4.0.4). Nó cũng không xảy ra khi sử dụng WebView trong một ứng dụng trên điện thoại Samsung: trong những trường hợp đó, vị trí hoạt động như mong đợi.

Có cách nào để làm cho trình duyệt "Android" của Samsung Android sử dụng vị trí cố định thực sự không?

Tôi đã thử nghiệm: 1. Samsung Galaxy 551, Android 2.2 2. Samsung Galaxy S, Android 2.3 3. Samsung Galaxy S II, Android 2.3

Mẫu mã:

<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no,width=device-width,height=device-height"> 
    <style> 
    h1 { position: fixed; top: 0; left: 0; height: 32px; background-color: #CDCDCD; color: black; font-size: 32px; line-height: 32px; padding: 2px; width: 100%; margin: 0;} 
    p { margin-top: 36px; } 
    </style> 
    </head> 
    <body> 
    <h1>Header</h1> 
    <p>Long text goes here</p> 
    </body> 
</html> 

Hành vi mong đợi là tiêu đề màu xám lấp đầy đầu màn hình và vẫn đặt bất kể bạn di chuyển bao nhiêu. Trên các trình duyệt Android của Samsung có vẻ như di chuyển ra khỏi màn hình sau đó bật lại vào vị trí sau khi cuộn xong, như thể vị trí cố định đang được mô phỏng bằng Javascript, mà nó không phải là.

Chỉnh sửa Đánh giá bởi nhận xét và "câu trả lời" có vẻ như có thể tôi không rõ ràng về những gì tôi cần. Tôi đang tìm một thẻ meta hoặc quy tắc css/hack hoặc javascript chuyển đổi mà tắt vị trí cố định bị hỏng của Samsung và biến trên vị trí cố định làm việc của trình duyệt Android. Tôi không tìm kiếm giải pháp Javascript cho biết thêm vị trí cố định bị hỏng vào trình duyệt không hỗ trợ gì; vị trí cố định của Samsung đã thực hiện điều đó, nó trông có vẻ ngu ngốc.

+0

Bạn có một tài liệu tham khảo cho "Trình duyệt Android, kể từ 2.2, hỗ trợ định vị cố định"? – deefour

+0

@Deefour Trình giả lập Android trong SDK xác nhận nó, như tôi đã đề cập trong bài đăng của tôi. –

+0

[caniuse] (http://caniuse.com/css-fixed) cho biết <3.0 chỉ hỗ trợ một phần và [bài viết được tham chiếu] (http://bradfrostweb.com/blog/mobile/fixed-position/) nói "Android 2.2 lúng túng chụp lại các phần tử cố định trở lại vị trí khi cuộn xong." Chỉ cần tìm một cái gì đó xác nhận những gì bạn thấy trong SDK của bạn là hành vi mong đợi, vì nó có vẻ ít nhất là với Galaxy 551 (một với 2.2) bạn đang trải nghiệm hành vi chính xác mà bài viết được đề cập ở trên mô tả. – deefour

Trả lời

1

Có lẽ bạn có thể xem xét một cách tiếp cận khác nhau mà không yêu cầu vị trí cố định ...

Add di chuyển tới phần tử đoạn thay vì trên các yếu tố cơ thể (mặc định). Sau đó, bạn có thể định vị phần tử đoạn ngay dưới tiêu đề. Điều này sẽ đảm bảo rằng tiêu đề luôn hiển thị ở đầu trang cho phép bạn cuộn qua văn bản trong đoạn văn.

h1 { 
    height: 20px; 
} 

p { 
    position: absolute; 
    top: 20px; 
    left: 0px; 
    right: 0px; 
    bottom: 0px; 
    overflow-y: auto; 
} 
+2

Điều đó có thể hiệu quả. Tuy nhiên, tôi đã nghe nói rằng hiệu suất cuộn chậm hơn nhiều khi cuộn một phần của tài liệu thay vì toàn bộ tài liệu. Dù sao, tôi đang sử dụng jQuery Mobile vì vậy tôi không có nhiều sự linh hoạt về cấu trúc tài liệu. –

1

Tôi nghĩ cách tốt nhất để trình duyệt Android 2.2 triển khai javascript.

Bạn có thể tìm thêm thông tin qua liên kết này. Đó là về định vị cố định trong tất cả các trình duyệt di động.

http://bradfrostweb.com/blog/mobile/fixed-position/

-2

Đó không phải là trình duyệt bị hỏng Android của Samsung, đó là Android 2.2 trong đó có sự hỗ trợ bị phá vỡ. Nói chung, bạn có thể biết vị trí: cố định và trong một số trường hợp vẫn còn khá bị hỏng trong nhiều thiết bị/hệ thống di động.

Để trả lời cho câu hỏi của bạn, không có "chuyển đổi hoặc thẻ meta" sẽ "bật vị trí cố định hoạt động của trình duyệt Android". Nếu trình duyệt không hỗ trợ gì đó, thì không có "chuyển đổi" thành "chuyển đổi" nó. Nó không phải là một tính năng.

Nếu không, bạn có thể sử dụng http://cubiq.org/iscroll-4 để mô phỏng.

(chỉnh sửa: một số sự kiện)

  1. Theo http://caniuse.com/#search=position:fixed Android 2.2 và Android 2.3 có một phần và không hỗ trợ đầy đủ các position: fixed. (hỗ trợ một phần có vẻ hỗ trợ lỗi)
  2. Trình mô phỏng Android không và sẽ không bao giờ giống hệt với trình duyệt gốc của Android, ví dụ như IETester không giống với IE gốc (có sự khác biệt)
  3. Motorola ATRIX 4G KHÔNG có Android 2.2 nhưng Android 2.3 (http://www.motorola.com/us/consumers/MOTOROLA-ATRIX%E2%84%A2-4G/72112,en_US,pd.html?selectedTab=tab-2&cgid=mobile-phones#tab)

Bạn đang đề xuất một bản hack hoặc mod độc quyền phá vỡ hỗ trợ làm việc của vị trí cố định trong trình duyệt Android. Điều này có vẻ khó xảy ra, bất kể 3 điểm trên.

Câu trả lời thực sự đơn giản: Có hỗ trợ một phần (buggy) và giải pháp duy nhất của bạn là sử dụng thư viện javascript thay thế hoặc "sửa" lỗ.

+0

Sai. Tôi có nó làm việc trong kho Android 2.2 trên trình mô phỏng và trên Motorola Atrix 4G. Và làm việc trong Android 2.3 trên Nexus S và trình giả lập Android. Nó chỉ thất bại trên điện thoại có sửa đổi Samsung. –

+0

Tôi đã chỉnh sửa bài đăng của mình để thêm một số sự kiện chỉ để thực hiện mọi thứ trực tiếp trên một số nội dung. –

+0

Bạn có thể phủ nhận rằng Atrix 4G có 2,3, nhưng tôi cầm nó trong tay và rõ ràng là 2,2. Ngoài ra, trình mô phỏng Android đang chạy trình duyệt Android Stock. Nó không phải là một loại giả lập: nó mô phỏng toàn bộ máy bao gồm cả bộ vi xử lý. Nó là phần cứng thực sự. caniuse.com là một nguồn tài liệu tuyệt vời nhưng mã Android thực sự là tài liệu thực sự. Google gửi nó ở dạng đang hoạt động, nhưng trên mọi điện thoại SAMSUNG (tức là một điện thoại đang chạy TouchWiz) nó bị hỏng. Tôi không biết tại sao bạn đang tranh cãi với kết quả thử nghiệm của tôi. –

0

Trong bình luận của mình cho bài viết của Brad Frost Matthew Holloway đề xuất một giải pháp dọc theo dòng câu trả lời của Anita Foley, nhưng với một polyfill cho tràn: tự động, nơi không được hỗ trợ. Kiểm tra nó ra ở đây:

http://bradfrostweb.com/blog/mobile/fixed-position/

Các vấn đề liên quan