영어:A链接标记ie下会自动补全href.
Ajax Link Tracker 및 MapSurface 작업을 하는 동안 DOM 스크립팅을 사용하여 href 속성을 검색하는 방식에 불일치가 있음을 발견했습니다.
href 속성은 값 집합이 페이지 URL의 컨텍스트를 기준으로 할 수 있다는 점에서 다른 요소 속성과 다릅니다. 상대 href 속성으로 링크를 설정하는 경우
테스트 페이지
브라우저는 페이지의 현재 URL을 확인하고 링크의 절대 URL을 파생합니다.
http://www.glenn.jones.net/development/test1.html
이것이 문제의 근본입니다. 일부 브라우저는 속성의 텍스트를 반환하고 다른 브라우저는 파생된 절대 URL을 반환합니다. 결과는 href 속성을 검색하는 데 사용하는 방법에 따라 다릅니다. 속성에 액세스하는 세 가지 일반적인 방법이 있습니다.
linkobj.href;
linkobj['href'];
linkobj.getAttribute('href');
속성에 액세스하는
linkobj.href
및
linkobj[‘href’];
메서드는 파생된 절대 URL을 일관되게 반환합니다.
Microsoft는
문제 getAttribute 메소드에 두 번째 매개변수를 추가하여 이 문제를 해결하려고 했습니다. 두 번째 매개변수는 0,1 또는 2로 설정할 수 있습니다. 매개변수가 2로 설정된 경우 메소드는 속성 텍스트를 반환합니다. 다른 모든 설정은 파생된 절대 URL을 반환합니다.
linkobj.getAttribute('href');
linkobj.getAttribute('href',2);
|
|
파생된 절대 URL |
속성 텍스트 |
즉
linkobj.href;
엑스
즉
linkobj.getAttribute('href');
엑스
즉
linkobj.getAttribute('href',2);
엑스
도마뱀붙이
linkobj.href;
엑스
도마뱀붙이
linkobj.getAttribute('href');
엑스
도마뱀붙이
linkobj.getAttribute('href',2);
엑스
오페라
linkobj.href;
엑스
오페라
linkobj.getAttribute('href');
엑스
오페라
linkobj.getAttribute('href',2);
엑스
속성 테스트 페이지 가져오기 IE6, Firefox 1.5 및 Opera 8.51에서 테스트하세요.
그렇다면 getAttribute 메소드는 무엇을 반환해야 할까요?
getAttribute 메소드의 구조를 설명하는 W3C DOM 레벨 2 핵심 사양에서는 이 문제를 다루지 않습니다. 어느 접근 방식이 틀리거나 옳다는 것은 아닙니다. 이 점에서 사양은 해석의 여지가 있습니다.
코더로서 저는 두 가지 가치에 모두 접근할 수 있기를 바랍니다. 문제를 해결하려면 DOM Core 사양을 업데이트해야 합니다.
아래 댓글에서 Jim과 정말 좋은 대화를 나눈 후 정정되었습니다. 사양에는 getAttribute가 절대 URL이 아닌 속성 값을 반환해야 한다고 명시되어 있습니다. Microsoft의 접근 방식이 잘못되었습니다.
당분간은 파생된 절대 URL을 반환하기 위해 기존의 객체 속성 메서드
linkobj.href
를 사용하고 있습니다. 모든 브라우저에서 가장 일관된 결과를 제공합니다.
관심 있는 URLgetAttribute에 대한 W3C REC DOM 레벨 2 핵심 사양getAttribute에 대한 Gecko 문서getAttribute에 대한 Microsoft 문서