기능 테스트

종래에는 navigator 객체를 이용해 브라우저의 종류나 버전에 따라 분기 처리를 실시하기도 했다. 그러나 이 방법에는 "새로운 브라우저, 새로운 버전이 등장했을 경우에 하나하나 분기를 추가해야 한다"라는 큰 문제가 있다. 당연히 이것은 보수성의 관점에서 바람직하지는 않다.

그래서 현재는 아래와 같은 기능 테스트의 수법을 이용하는 것이 일반적이다. 기능 테스트란 어느 프로퍼티/메소드를 이용하기 전에 "시험삼아 호출해보고 존재하는지를 확인할 수 있으면, 그 기능을 실제로 호출한다"라는 수법이다. 이것에 의해서 코드에서의 영향을 최소한으로 억제할 수 있다.

							if (elem.attachEvent) {
								// attachEvent 메소드를 이용할 수 있는 경우의 코드
							}else if (elem.addEventListener) {
								// addEventListener 메소드를 이용할 수 있는 경우의 코드
							}else {
								// 어느 메소드도 이용할 수 없는 경우의 코드
							}