블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
02-29 00:00
 

달력

« » 2024.2
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
 

최근에 올라온 글

최근에 달린 댓글

자바스크립트로 엘리먼트들을 제어하다보면 뒤로가기 시 정상적으로 화면이 표시되지 않는 경우가 있다.

뒤로가기를 막을 수 있는 상황이라면 막는 것이 가장 깔끔하다.


history.pushState(null, null, location.href);

window.onpopstate = function(event) {

history.go(1);

};


위의 로직은 history 에 현재 페이지를 추가하고, 뒤로가기 시에 현재 페이지로 이동을 시켜 뒤로가기가 동작하지 않게 한다.


참고자료: http://stackoverflow.com/questions/16182993/how-to-prevent-a-browser-from-going-back-forward-in-history-when-scrolling-horiz



Posted by 자수씨
, |


해당 일자가 몇째주인지 확인하는 함수를 만들어보았습니다.




일단 되는 것 같으니... 


Posted by 자수씨
, |

브라우저가 다양해지면서 IE를 메인 브라우저로 사용하지 않게 된지 오래되었다. 개발할 때도 디버깅하기 편한 크롬으로 많이 작업하고 있는데, 개발 시 잘 돌아가던 부분이 IE에서 테스트하니 오동작을 발생시켰다.


문제는 Date 객체...


1. new Date('2014.05.27');

2. new Date('2014.05.27 10:40');

3. new Date('2014-05-27');

4. new Date('2014-05-27 10:40');

5. new Date('2014-05-27T10:40');


위의 예제 중에 IE에서 정상적인 결과 값을 얻을 수 있는 것은 무엇일까?


정답은 3 번이다. 5번은 파싱은 되지만 크롬에서는 원하는 결과를 얻을 수 없다.





5번의 경우 IE 와 크롬에서는 상이한 값이 나오므로 해당 방식으로만 사용하지 않으면 멀티 브라우저에 대응하는 날짜 파서 함수를 사용할 수 있다.


Posted by 자수씨
, |


역시 정규식이 짱!!!





Posted by 자수씨
, |

자바스크립트 환경변수를 js 파일에 글로벌 변수로 선언한 것을 DB화 시키기 위해 마이그레이션 툴을 만들다가 자바에서 기본으로 제공해주는 스크립트 엔진을 이용하여 파싱을 해보았습니다.

Parser 만들기

javax.script.* 클래스들을 이용하여 자바스크립트 글로벌 변수를 파싱하는 클래스 입니다.
JsGlobalVariableParser.java


간략하게 설명을 하자면, 문자열형 (String), 실수형 (Double), 부울린 형 (Boolean), 자바스크립트 오브젝트 형 (NativeObject) 을 추출하여 Map 으로 반환하는 로직을 가지고 있습니다. 문자열의 경우에는 single quotation 으로 감싸는 작업을 했으며, 실수형의 경우에는 정수로 변환하는 작업을 처리하였습니다. JavaScript Object 의 경우에는 json.js 의 stringify 함수를 이용하여 Object 그대로를 문자열로 치환하였습니다.

javax.script 패키지의 클래스들은 Rhino 가 자바 표준으로 포함되면서 별도의 라이브러리 추가 없이 사용할 수 있게 되었습니다.

Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users. It is embedded in J2SE 6 as the default Java scripting engine


테스트

글로벌 변수를 가지고 있는 실험용 스크립트를 통하여 테스트를 진행해 보겠습니다.
test.js


JsGlobalVariableParserTest.java



녹색바가 정상적으로 뜨는 것을 확인하였습니다.

조금 더 정비할 사항이 있긴 하지만 현재 처리되어야 하는 상황은 충분히 처리가 가능합니다.

Posted by 자수씨
, |

이클립스를 헬리오스로 올렸더니 자바스크립트 검증하시느라 메모리도 1기가 가까이 잡아드시고 'Problem Occurred' 창을 뱉어내셨습니다.




해결책은 프로젝트의 속성에서 Builders > JavaScript Validator 체크를 해제하면 됩니다.



괜히 다른 속성 만져보고 안되서 눈물을 흘릴 뻔했습니다...


Posted by 자수씨
, |

















다음 코드는 IE8 에서는 정상 처리되고 IE7 에서는 오류(문법 오류)가 납니다.



 
 
개발할 때는 호환성 모드로 항상 테스트를 해야 한다는 거...
IE8 에서 테스트 하면 놓치는 부분이 생기기 마련입니다.
 

Posted by 자수씨
, |

완전 고생 끝에 찾은 정보입니다... (간단하긴 했는데 -_ㅜ)

구글에 여러가지 키워드로 검색도 해보고 검색결과로 테스트를 해봐도 찾을 수가 없어서 마지막 방법으로 VBScript 로 검색해보니 아래와 같은 방법이 있었습니다. =ㅁ=... 그 내용을 힌트로 자바스크립트로 샤샥... 관련 함수를 만들어 봤습니다.




'Scripting.FileSystemObject' 의 GetSpecialFolder() 함수를 이용하여 여러가지 OS 특정 폴더를 확인할 수 있습니다.

GetSpecialFolder Method

Returns the special folder object specified.

object.GetSpecialFolder(folderspec)

  Arguments

object

Required. Always the name of a FileSystemObject.

folderspec

Required. The name of the special folder to be returned. Can be any of the constants shown in the Settings section.

  Settings

The folderspec argument can have any of the following values:

Constant

Value

Description

WindowsFolder

0

The Windows folder contains files installed by the Windows operating system.

SystemFolder

1

The System folder contains libraries, fonts, and device drivers.

TemporaryFolder

2

The Temp folder is used to store temporary files. Its path is found in the TMP environment variable.

The following example illustrates the use of the GetSpecialFolder method.


출처: MSDN (http://msdn.microsoft.com/en-us/library/a72y2t1c(VS.85).aspx)

제가 원하는 것은 Temp 디렉토리였기 때문에, GetSpecialFolder(2) 로 원하는 경로를 가지고 왔습니다만, 윈도우 폴더나 시스템 폴더를 확인하려면 파라미터 값을 달리 하여 호출하면 원하는 결과를 얻을 수 있습니다.



이제 남은 건 서버에 저기에 있는 파일을 올려야 하는데... 자바스크립트로는 불가능하고 ActiveX 아니면 swf 로 처리를 해볼까 생각 중입니다.

Posted by 자수씨
, |

'{ A: "AA", B: "BB" }'

위와 같은 스트링을 자바스크립트에서 객체화 하려면 어떻게 할까요?

var jsonStr = '{ A: "AA", B: "BB" }';
var obj = eval(jsonStr);

위와 같은 방식으로 하면 아래와 같은 오류가 발생합니다.

오류:  "';'가 필요합니다."

음... -ㅁ-;;; 일단은 아래와 같이 땜빵을 하였습니다.

var jsonStr = '{ A: "AA", B: "BB" }';
eval('var obj = ' + jsonStr + ';');



ExtJS 라이브러리를 보니 JSON 스트링을 괄호로 감싸서 처리를 하네요...

var jsonStr = '{ A: "AA", B: "BB" }';
var obj = eval('(' + jsonStr  + ')');



캬캿 잘 됩니다.


Posted by 자수씨
, |



티스토리 블로그를 보거나 네이버에서 서비스 하는 것을 보다 보면 무언가를 작성하다 나갈 때 위와 같은 메시지를 확인 하신 경우가 있으실 것 입니다.

당장 지금 포스팅을 작성하다가 창을 끄거나 아래 취소를 누르면 메시지가 8초전까지만 저장된다는 메시지를 보실 수 잇습니다.
(그냥 확인만...)

위의 창을 보이게 하는 설정은 아래와 같습니다.

window.onbeforeunload = function() {

           return "닫을 꺼예요??";

};


그냥 간단하게 윈도우나 BODY, FRAMESET 등과 같은 객체에 이벤트로 등록을 해주는 것만으로도 설정이 됩니다.


위의 확인 창이 발동되는 조건은 아래와 같습니다.

- 현재 브라우저 윈도우를 닫을 경우
- 새로운 주소를 치거나 즐겨찾기를 선택하여 새로운 경로로 탐색할 경우
- 뒤로, 앞으로, 새로고침, 홈으로 버튼을 클릭할 경우
- Click on an anchor that refers the browser to another Web page. (???)
- Invoke the anchor.click method. (???)
- document.write 메소드가 불려지는 경우
- document.open 메소드가 불려지는 경우.
- document.close 메소드가 불려지는 경우.
- window.close 메소드가 불려지는 경우.
- window.open 메소드가 불려지는 경우, providing the possible value _self for the window name.
- window.navigate or NavigateAndFind 메소드가 불려지는 경우. 
- location.replace 메소드가 불려지는 경우.
- location.reload 메소드가 불려지는 경우.
- location.href 프로퍼티에 새로운 값이 정의되는 경우
- FORM submit 하는 경우

anchor 와 관련된 것은 잘 모르겠지만 (하이퍼링크 대상을 나타내는 문자열이라고는 하는데...) 위와 같은 경우에 beforeunload 메소드가 fire 됩니다.



참고 사이트:
onbeforeunload Event (MSDN)
http://msdn.microsoft.com/ko-kr/library/ms536907(en-us,VS.85).aspx



Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백