최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

티스토리 뷰

Adobe AIR 에서 Safari 웹 브라우저에 사용되는 Webkit (www.webkit.org) 을 사용하여 HTML 및 Javascript 내용을 파싱하고 있다.


다음 표에는 AIR에서 사용되는 것과 동일한 버전의 Webkit 을 사용하는 Safari 웹 브라우저 버전 목록이다.

AIR 버전

Safari 버전

1.0

2.04

1.1

3.04

1.5

4.0 베타

2.0

4.03

2.5

4.03

2.6

4.03

2.7

4.03

3

5.0.3

행여나 에이전트를 확인하려면 다음과 같이 HTMLLoader 객체에 반환되는 기본 사용자 에이전트 문자열을 이용해서 확인한다.


var htmlLoader:HTMLLoader = new HTMLLoader(); 
trace( htmlLoader.userAgent );


이제 브라우저 에이전트를 확인했으니 시행착오 겪은 부분은 다음과 같다.


크롬)                                                      사파리)

                 


변수 가공 전에는 04, 09, 11 인데 가공후 각각 다르다. 


비교해본 브라우저는 "크롬, IE, 파이어폭스" vs "사파리" 유독 사파리 브라우저만 다르고 AIR기반 브라우징 테스트를 왜 크롬에서


했을까 깊은 반성과 후회를 했다. 애초에 똑같은 환경에서 테스트 했어야했는데 ...


(그랬다면 하나하나 조립할때 확인하며 오류없이 조립할 수 있었을 테니까)


어쨌든, 코드를 되짚어가본 결과 하단의 parseInt 메서드에서 원하지 않는 결과가 출력됨을 알 수있다.




결과만 따져 보자면 일단 기본적으로 octal 연산을 하고있었다.


parseInt("09") 일경우 결과는 9가 아니라 0이 출력된다.


API를 보면 다음과 같다.


parseInt(numString, [radix])


numString은 필수지만 radix는 선택적인 요소로 2부터 ~ 36까지의 값이다.


이 요소를 생략하면 '0x'는 16진수로, '0'은 8진수로 인식하여 처리한다. 다른문자열은 모두 십진수 decimal 로 인식하여 처리.


따라서 radix에 10을 빼먹었기 때문에 10진수를 얻기 위해서는 명시적으로 parseInt("09", 10); //결과 9 


로 써주어야 한다.


참고로 numString에 포함되어 있는 숫자에 해당하는 숫자 값을 반환하기 때문에 


parseInt("abc") // NaN 반환합니다. 

parseInt("12abc") // 12 반환합니다.


와 같은 결과가 나온다.


해결한 코드는 아래와 같으며



결과 비교)


     



제작물에 반영) 사파리에서도 오류없이 잘 뜬다. 이 기형적인 형태의 달력 구현하는데 2주일 가까이 걸렸다..


AIR ( php > sql(MySQL) > js > html)


각 날짜 클릭)



댓글