;script type ="text/javascript">
(function(){
var test = document.getElementById('test');
alert(test.innerHTML);
var result = document.getElementById('result');
result.innerHTML = test.innerHTML;
alert(result.innerHTML)
})(); >
결과적으로 IE6, IE7 브라우저에서 두 번째로 나타나는 result.innerHTML의 A 요소의 href 값이 절대 경로가 되는 것을 알 수 있습니다.
사실 우리 조상들은 오랫동안 이러한 문제에 직면해 왔습니다(정보를 주신 유삼촌님께 감사드립니다):
《getAttribute("HREF")는 항상 절대값입니다》
《getAttribute href 버그》
위 기사에서 해결책이 언급되었는데, 이는 IE에서 getAttribute('href', 2) 메소드를 사용하는 것입니다. Microsoft는 0, 1 또는 2로 설정할 수 있는 두 번째 매개 변수를 사용하여 이 메서드를 확장했습니다. 2로 설정하면 속성의 원래 값이 반환됩니다. 스크립트 수정:
코드 복사
코드는 다음과 같습니다. (function(){ var test = document.getElementById('test'); alert(test.innerHTML);
var result = document.getElementById('result'); 결과. innerHTML = test.innerHTML ;
if(/*@cc_on!@*/0 ) { //if 즉
var link1 = test.getElementsByTagName('a')
varlink2 = result.getElementsByTagName ('a') ;
for(var i = 0, len = link1.length; i < len; ++i ) {
links2[i].href = link1[i].getAttribute(' href', 2) ;
}
}
alert(result.innerHTML);
})();
이 문제를 검색하는 동안에도 검색했습니다. Hedger Wang이 발견한 흥미로운 BUG 문제: IE에서 새 href 속성 값을 재설정할 때 링크 텍스트에 "http://" 또는 "@"가 포함되어 있으면 해당 innerHTML이 잘못 표시되고 세트로 표시됩니다. href 속성.
해결책(sHref는 설정할 href의 새 값):
코드 복사
sHref = ' ' + sHref; //새 href 앞에 추가 공간을 추가합니다 };
세부정보:
《새 "href"가 할당되면 Internet Explorer가 Anchor의 innerHTML을 잘못 재설정할 수 있습니다》