>  기사  >  웹 프론트엔드  >  IE_Experience 교환 시 href의 BUG 문제

IE_Experience 교환 시 href의 BUG 문제

WBOY
WBOY원래의
2016-05-16 12:04:031621검색
코드 복사 코드는 다음과 같습니다.


;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 = 'http://www.hedgerwow.com'; var isMSIE = /*@cc_on!@*/false if( isMSIE ){
    sHref = ' ' + sHref; //새 href 앞에 추가 공간을 추가합니다
    };
    세부정보:

    《새 "href"가 할당되면 Internet Explorer가 Anchor의 innerHTML을 잘못 재설정할 수 있습니다》


  • 성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.