2013-10-04 2 views
0

간단한 WebView를 사용했지만, 페이지에 Android가 자동으로로드되면 양식의 첫 번째 텍스트 필드에 초점이 맞춰질 수 있습니다.Android - 웹 페이지가 양식에 집중하는 것을 방지합니다.

즉, 웹 페이지가로드되면 Android는 첫 번째 텍스트 입력란에 커서를 표시하여 자리 표시 자 텍스트를 숨 깁니다.

이 동작을 어떻게 방지 할 수 있습니까 ??

+0

브라우저 (WebView 포함)에 초점을 맞추는 것이 웹 페이지에 의해 결정됩니다. 어쨌든 정확히 어떤 행동을 원하니? 키보드를 보여 주며 원하지 않거나 웹보기가 아닌보기에 초점을 맞추고 싶습니까? – Randy

+0

첫 번째 텍스트 필드에 커서를 표시하여 자리 표시 자 텍스트를 숨 깁니다. 내가 찾고있는 동작은 커서를 표시하지 않고 웹 페이지로드 만하는 것입니다. – TMacGyver

답변

0

필자는 입력 요소에 outline : none을 설정하여 순간적인 오버레이 이동을 막을 수있었습니다.

대화 상자를 표시 할 때 html 본문에 overflow : hidden을 설정하고 대화 상자를 숨길 때 다시 제거하여 야생 페이지를 스크롤하고 사라지는 키보드가 있습니다. 이것은 페이지의 스크롤 위치를 재설정하는 불쾌한 부작용을 가지고 있으므로 필요에 따라 저장하고 복원하고 조건에 따라이 모든 해커를 래핑하여 Android에서만 실행되도록합니다. (대화 상자가 열린 상태에서 반투명 오버레이 아래에서 페이지 내용이 변경되는 것을 보았을 때 Android 사용자가 너무 혼란스러워하지 않기를 바랍니다.)

흥미롭게도 나는 잡기로 야생 페이지 스크롤을 방지 할 수있었습니다. 내 overlay 요소의 touchstart 이벤트 및 preventDefault() 호출.

touchstart가 중복 입력 필드가 브라우저를 배치했다 브라우저가 touchstart을보고 문서 루트까지 거품 입력 필드에 소프트 포커스을 제공합니다 :이 모든 광기 이런 일련의 사건으로 인한 경우 나 궁금합니다 키보드가 입력 필드에 입력 할 수 있도록 표시됩니다. 소프트 키를 수용하기 위해 뷰포트의 크기가 조정됩니다. 터치 이벤트 중에 뷰포트 크기가 조정 됨 브라우저에 대한 터치 드래그로 보임 가짜 드래그로 페이지가 스크롤되어 키보드가 닫힘 끝나지 않았습니다. 그것은 입력 필드가 포커스를 얻을 수 없기 때문에 문제를 해결하기 위해 touchstart를 잡아 내고 javascript에서 focus()를 호출하면 오크. 안드로이드 브라우저가 입력 필드에서 focus() 메소드를 사용할 수 없다는 것을 읽었습니다. 아마도 html로 정의 된 필드를 통해 만든 텍스트 위젯을 복제 할 수 없기 때문에 가능합니다.

관련 문제