브라우저 IE6, IE7, Firefox2+, FireFPX3+, Opera9.6+, Safari3.1+에서 다음 코드 (데모)를 테스트하십시오.
<div id = test>
<a href =#> 테스트 </a>
</div>
<div id = 결과> </div>
<스크립트 유형 = 텍스트/JavaScript>
(기능(){
var test = document.getElementById ( 'test');
알림 (test.innerhtml);
var result = document.getElementById ( 'result');
result.innerhtml = test.innerhtml;
Alert (result.innerhtml)
}) ();
</스크립트>
결과적으로 IE6에서 두 번째로 팝업 된 A 및 IE7 브라우저가 절대 경로가됩니다.
실제로, 우리 조상들은 오래 전에 이러한 문제를 겪었습니다 (제공된 정보에 대한 Yu Bo 덕분) :
처리 솔루션은 위의 기사에서 언급되었으며, 이는 getAttribute ( 'href', 2) 방법을 사용하는 것입니다. Microsoft는 두 번째 매개 변수를이 방법으로 확장하여 0, 1, 2로 설정할 수 있으며 2로 설정하면 속성의 원래 값이 반환됩니다.
스크립트는 다음으로 고정되었습니다.
(기능(){
var test = document.getElementById ( 'test');
알림 (test.innerhtml);
var result = document.getElementById ( 'result');
result.innerhtml = test.innerhtml;
if (/*@cc_on!@*/0) {// IF IE
var links1 = test.getElementsByTagName ( 'a');
var links2 = result.getElementsByTagName ( 'a');
for (var i = 0, len = links1.length; i <len; ++ i) {
links2 [i] .href = links1 [i] .getAttribute ( 'href', 2);
}
}
Alert (result.innerhtml);
}) ();
이 문제를 찾는 과정에서 Hedger Wang에서 찾은 흥미로운 버그를 검색했습니다. 새로운 HREF 속성 값이 IE에서 재설정 될 때 링크 텍스트에 http : // 또는 @가 포함되어 있으면 내부 HRTML이 잘못 표시되고 세트 HREF 속성으로 표시됩니다.
해결 방법 (SHREF는 설정할 HREF의 새로운 가치) : :
shref = 'http://www.hedgerwow.com';
var ismsie = /*@cc_on!@* /false;
if (ismsie) {
shref = '' + shref; // 새로운 HREF 전에 추가 공간을 추가합니다
};
세부 사항 : "Internet Explorer는 새 HREF가 할당 될 때 앵커의 InnerHTML을 잘못 재설정 할 수 있습니다."