특정 웹 페이지에서 클리퍼 기능을 구현하기 위해 웹 소스를 분석하던 중,
특이한 소스를 만났다.
이 곳의 소스는 태그에 Name이나 ID를 거의 사용하지 않고 Class를 사용하였다.
이 경우 Document에서 getElementsByClassName를 사용하면 되는데 아쉽게도
Document.getElementsByClassName는 없다.
열심히 서핑을 한 결과
documentElement.getElementsByClassName에 있다는 것을 알아냈다.
즉, 다음과 같이 사용하면 class="abcd" 인 태그를 찾아낼 수 있는 것이다.
$category = $ie.Document.documentElement.getElementsByClassName('abcd') | %{$_.innerText} | Select -First 1
그런데 어제는 분명 이것이 잘 먹었는데 오늘은 제대로 작동하지 않는 것이 아닌가?
왜 그럴까 오전 내내 고민하고 삽질하다가 드디어 원인을 알아냈는데 굉장히 어이 없는 것이었다.
내가 어제 저녁에 분석중이던 웹 페이지가 호환성 보기로 설정되어 있지 않길래 호환성 보기 설정을 한 것이 원인이었다.
그래서 다시 주소창 오른쪽에 호환성 보기 설정을 해제한 후 코드를 실행하니 정상적으로 잘 되었다.
추측컨대, documentElement는 IE9 이상에서만 사용가능한 것인가보다.