2011-01-24 2 views
0

모바일 브라우저를 감지하면보기 엔진이 다른보기 페이지를 렌더링하는 웹 앱 (C# MVC 앱)을 만들고 있습니다. 특히 Android 웹킷 브라우저 (Froyo)를 타겟팅하고 있습니다. 이상하게도 을 iPhone에서 올바르게 렌더링합니다.마크 업과 스크립트 영역을 무시하는 모바일 브라우저 (Webkit, Android)

문제는 내가 에뮬레이터에서 로컬로 테스트 할 때 렌더링이 잘되고 바탕 화면에서 Chrome을 사용하면 렌더링이 잘된다는 것입니다. 그러나 실제 휴대 전화 (Nexus 1 및 MyTouch)에서 테스트 할 때 마크 업 모든 텍스트 노드가 텍스트로 렌더링됩니다. 이것은 HTML5 DOCTYPE을 사용하여 발생합니다 (가장 간단한 마크 업을 사용하는 경우조차도). xmlns 속성을 태그 (xmlns = "http://www.w3.org/1999/xhtml")에 삽입하면 마크 업에주의를 기울이지 만,이 태그는 자체 문제 세트와 함께 제공됩니다 (가장 구체적으로 JQuery Moblie와 작동하지 않기를 바란다.) 나는 네임 스페이스를 생략하는 것을 선호한다.

또한 어둠 속에서 나는 분명히 콘텐츠 유형을 text/html로 설정하여 그 점이 도움이되는지 확인했지만 행운은 없습니다. 나는 C#에서이 글을 쓰고 있다고 말했을 때 모두 알아 냈을 것이라고 확신하지만, 웹 서버는 IIS이다.

는이 간단한 마크 업이 작동하지 않습니다

<html> 
<head> 
<title>html5 test for android</title> 
</head> 
<body> 
<h1>h1 markup</h1> 
<h2>h2 markup</h2> 

<p>this is a paragraph of text</p> 
</body> 
</html> 

을 나는 모바일 웹 데브 경기장에서 newb 해요 - 그래서 나는이 같은 단순하고 머리가 나쁜 문제가 바라고 있어요 그것은 모든 사람 뭔가 그러나 나는 알고있다. (이것이 내가 웹상에서 방향을 찾지 못한 이유이다.)

도움 주셔서 감사합니다.

+0

샘플 http 응답 텍스트가 유용합니다 (페이지 소스 및 http 헤더의 순수 텍스트). – naugtur

+0

인코딩을 살펴보십시오. 요즘 utf8을 사용해야합니다. – naugtur

+0

특별히 "text/html"로 콘텐츠 유형을 설정하고 서버 응답에서 인코딩을 UTF-8로 설정했지만 차이점은 없습니다. 위의 게시물에 포함 된 마크 업을 사용하면 브라우저에 포함 된 모든 텍스트 (마크 업 없음)를 표시하는 일반 텍스트 한 줄을 출력합니다. 서버에서 반환 된 HTML은 게시물의 내용과 동일합니다. HTTP 헤더를 볼 수있는 좋은 방법을 안드로이드 브라우저 (어떤 제안?) – GarthT

답변

0

문제는 CodePlex의 mobile.browser 파일을 사용하는 것으로 판명되었습니다. 이 파일은 내 안드로이드 브라우저에서 선호하는 MIME 유형이 text/html이 아닌 application/xhtml + xml이라는 서버임을 나타냅니다. 컨트롤러의 동작 방법에서 컨텐트 유형을 설정해도 문제가 해결되지 않았습니다. 우리는 명시 적으로 페이지 지시문에서 내용 유형을 설정했습니다. mobile.browser 파일이 계속 사용할 것인지 결정하기 위해이 솔루션을 다시 방문 할 것입니다.

0

Android 웹 브라우저는 HTML5를 사용할 수 있어야합니다. 위 코드는 단순한 오래된 HTML입니다. 다음과 같이 거기에서 HTML5의 문서 타입을 넣어해야합니다

을 그 여전히 작동하지 않으면, 당신은 ASP.NET과 함께 문제를 스니핑 브라우저 기능이 몇 가지 문제가있다 생각합니다. jQuery의 경우 브라우저가 HTML5를 지원할 수 있다면 jQuery를 사용해 볼 수도 있습니다. 안드로이드 시뮬레이터에서 테스트했기 때문에 안드로이드 폰과 함께 작동한다는 것을 알고 있습니다. ASP.NET이 어떤 종류의 브라우저 및/또는 장치를 처리하는지 정의 할 수없는 경우 Android 웹킷 브라우저의 브라우저 기능을 다운 그레이드했을 수 있으므로 먼저 ASP.NET 브라우저 기능을 살펴보십시오. 그 외, 서버가 아닌 페이지 (일반 HTML 파일)를 작성하고 그 페이지가 올바르게 렌더링되는지 확인할 수 있습니다. 또한 모바일 버전이 아닌 일반 jQuery 1.4.x를 사용해보십시오.

+0

FWIW, JQuery 모바일에는 일반 JQuery 라이브러리가 필요하며 태그가 포함되어 있습니다 (예제에서 빠져 있지만). 게시물에서 언급했듯이 실제 전화가 아닌 에뮬레이터에서 페이지가 올바르게 렌더링됩니다. 페이지는 ASP.NET MVC로 작성되므로 컨트롤의 다운 레벨링은 문제가되지 않습니다 (게다가 포스트에 포함 된 마크 업을 사용하면 얻을 수있는만큼 간단합니다). 다음에 평평한 html 페이지를 렌더링 해 보겠습니다. – GarthT

+0

그런데 .... 내가 소비하려는 까마귀에 약간의 소금 (그리고 아마도 살사)을 넣고 싶습니다. 브라우저 기능은 아니지만 Hanselmann의 게시물에 따라 mobile.browser 파일을 사용하여 문제가 발생한 것과 비슷한 문제였습니다. 명시 적으로 컨텐트 유형을 설정했지만 서버가 내 변경 사항을 덮어 쓰는 것으로 나타났습니다. 파일에서 기본 MIME 유형이 text/html이 아닌 application/xhtml + xml 인 것으로 지정되었습니다. 당신의 도움을 주셔서 감사합니다. – GarthT

관련 문제