2011-05-15 2 views
0

HTML5에 익숙해 지려고합니다. 나는 경험 많은 프로그래머이지만 자바 스크립트 초보자이다. getCurrentPosition에 코드를 작성했습니다 (위치가 고정되면 비동기 콜백이 발생 함). 그 코드가 실행되면,HTML5 geolocaton 결과가 내 웹 페이지에서 벗어납니다. 어떻게 멈추게합니까?

function tryGeo() { 
    document.write("asking for location <br>"); 
    try { 
     navigator.geolocation.getCurrentPosition(savePos); 
    } catch (e) { 
    document.write("Excpn in asking for location <br>"); 
    } 
    document.write("have asked for location <br>"); 
} 

그것은 권한 요청 창 또는 대화 상자를 팝업 : 다음 코드는 (이미 검사를하고,이 플랫폼에서 위치 정보에 대한 긍정적 인에 응답, 지원을 가지고)입니다. 나는 허락을 받는다. 이것은 MacOS 10.6.7의 Firefox 3.6.8입니다.

은 얼마 후, savePos에 콜백() 발생 (위치가 알려진 경우) :

function savePos(pos) { 
    lat = pos.coords.latitude; 
    lon = pos.coords.longitude; 
    document.write("have got location lat " +lat+ ", lon " +lon+ " <br>"); 
} 

제가하는 데 문제는 그 document.write를()는 새로운 이동한다는 것입니다 빈 페이지. 대신 getCurrentPosition() 요청을 할 때 렌더링중인 페이지에 텍스트를 추가하려고합니다. 어떻게해야합니까?

저는 약간의 초보자 실수를하고 있습니다. 무엇이 있는지 알려주세요.

또한 '경험이 풍부한 코더를위한 자바 스크립트 배우기'링크에 대한 링크가 제공됩니다. Thaks,의

피터

답변

3

document.write 작동 방법 :

문서에 쓰기 이미 document.open()를 호출하지 않고로드 자동으로 document.open 호출을 수행합니다.

그리고 document.open : 문서가 대상에 존재하는 경우

,이 방법은 지워집니다.

그리고 그냥 참고 위의 자신의 예 :

// In this example, the document contents are 
// overwritten as the document 
// is reinitialized on open(). 
document.write("<html><p>remove me</p></html>"); 
document.open(); 
// document is empty. 

가장 쉬운 것은 이미 페이지에 존재하는 요소를 가지고 있고 그 요소의 컨텐츠를 업데이트하는 것입니다. 콜백에서

<p id="you-are-here"></p> 

그리고 :

document.getElementById('you-are-here').innerHTML = "have got location lat " + lat + ", lon " + lon; 

그래, 좋아, 당신의 사소한 초보자의 오류가 이미로드 된 문서에 document.write을 사용하고 그래서, 당신은 HTML의 조금이있을 것이다.

관련 문제