티스토리 뷰

발생일: 2011.02.10

문제:
<a href="#abc"></a>과 같은 태그에서 abc 값을 가져오기 위해,
el.attr("href").substring(1) 과 같은 코드를 사용했다.
(attr은 현재 사용하고 있는 라이브러리의 속성을 가져오는 메서드)

헌데, IE7 이하에서는 el.attr("href") 값으로 #abc가 아닌 전체 경로가 리턴된다.

어떤 때는 전체 경로가 리턴되고 어떤 때는 직접 기술한 값이 리턴되는데, 정확한 이유는 뭘까?


해결책:
URL을 표현하는 속성을 가져올 때에는 몇 가지 주의할 점이 있다.

- URL을 표현하는 속성(href, src, action 등)을 DOM Attribute에서 직접 가져오면 속성 값이 전체 경로에 더해져 리턴된다.
- DOM Level1의 getAttribute() 메서드를 이용할 경우, 속성에 기술한 값을 그대로 가져올 수 있다.
- 단, IE7 이하일 경우에는 getAttribute()에서도 전체 경로가 더해진 값을 리턴한다. 속성에 기술한 값만 가져오기 위해서는 get Attribute의 두 번째 매개변수로 플래그 값 2를 전달해야 한다. 예) getAttribute("href", 2); 플래그 값 2는 속성 값을 string으로 가져오겠다는 걸 의미하며, 이벤트 속성에는 적용되지 않는다.
- href 값이 공백일 경우, IE7 이하에서는 전체 경로를, 그 외 브라우저에서는 공백을 리턴한다.
- href 속성 자체가 없을 경우, IE7 이하에서는 공백을, 그 외 브라우저에서는 null을 리턴한다.

브라우저별 리턴 값


* jQuery의 경우엔 attr로 해당 값을 가져올 때, 직접 기술되어 있는 값을 가져오도록 처리되어 있다.

참고 URL
반응형
댓글
공지사항