2016-07-27 20 views
5

Tôi có trang web đáp ứng mở ra một phương thức khi bạn nhấn vào nút. Khi phương thức mở ra, nó được thiết lập để chiếm toàn bộ chiều rộng và chiều cao của trang bằng cách sử dụng định vị cố định. Phương thức cũng có một trường đầu vào trong đó.Cách ngăn bàn phím iOS đẩy màn hình tắt màn hình bằng CSS hoặc JS

Trên thiết bị iOS, khi trường nhập được lấy nét, bàn phím sẽ mở ra. Tuy nhiên, khi nó mở ra, nó thực sự đẩy các tài liệu đầy đủ lên trên con đường như vậy mà một nửa của trang của tôi đi trên đầu trang của khung nhìn. Tôi có thể xác nhận rằng chính thẻ html thực tế đã được đẩy lên để bù đắp cho bàn phím và nó đã không xảy ra thông qua CSS hoặc JavaScript.

Có ai nhìn thấy điều này trước và, nếu có, có cách nào để ngăn chặn hoặc định vị lại mọi thứ sau khi bàn phím đã mở không? Đó là một vấn đề vì tôi cần người dùng có thể xem nội dung ở đầu phương thức trong khi, đồng thời, tôi muốn tự động lấy tiêu điểm cho trường nhập.

+0

Bạn có thấy điều này: http://stackoverflow.com/questions/13820088/how-to-prevent-keyboard-push-up-webview-at-ios-app-using -phonegap – Iceman

+0

@ Tôi không có. Tôi đã thử tìm kiếm các câu hỏi tương tự nhưng không tìm thấy câu hỏi đó. Tôi sẽ thử nó. – rescuecreative

+0

@rescuecreative. Tôi không chắc chắn nếu điều này sẽ giúp, vì giải pháp này là dành cho IOS8 như tôi đã có vấn đề tương tự trên IOS8 và Safari. – ankurJos

Trả lời

5

đầu tiên

<script type="text/javascript"> 
$(document).ready(function() { 
    document.ontouchmove = function(e){ 
      e.preventDefault(); 
      } 
}); 

thì đây

input.onfocus = function() { 
    window.scrollTo(0, 0); 
    document.body.scrollTop = 0; 
} 
+1

Cảm ơn! Nó hoạt động hoàn hảo. Btw, tôi chỉ sử dụng 'document.body.scrollTop = 0'; –

0

Cả hai trình phát IOS8 và Safari đều hoạt động tương tự cho input.focus() xảy ra sau khi tải trang. Cả hai đều zoom vào yếu tố và đưa lên bàn phím. (Không quá chắc chắn nếu điều này sẽ giúp đỡ nhưng có bạn đã cố gắng sử dụng một cái gì đó như thế này?)

HTML LÀ

<input autofocus> 

JS

for (var i = 0; i < 5; i++) { 
document.write("<br><button onclick='alert(this.innerHTML)'>" + i + "</button>"); 
} 

//document.querySelector('input').focus(); 

CSS

button { 
width: 300px; 
height: 40px; 
} 

cũng có thể bạn sẽ phải sử dụng một workaround user-agent, bạn có thể sử dụng nó cho tất cả các phiên bản IOS

if (!/iPad|iPhone|iPod/g.test(navigator.userAgent)) { 
element.focus(); 
} 
+0

Xin lỗi, có thể tôi không hiểu. Các nút và cảnh báo sẽ trợ giúp như thế nào? – rescuecreative

+0

@rescuecreative tôi đoán tôi đã hiểu nó sai. Tôi đã nghĩ rằng có thể bạn đang cố gắng hiển thị bàn phím ảo và cuộn sau khi chạm vào trang. – ankurJos

+0

Ah, tôi hiểu rồi.Không, tôi đang cố gắng ngăn bàn phím ảo đẩy DOM bên ngoài chế độ xem – rescuecreative

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