firefox에 innerText 속성 구현
많은 코드를 작성하고 또 잊어버리는 게 너무 아깝기 때문에 메모하는 습관을 기르기로 했습니다.
지식 포인트:
0. 왜 innerText인가요? 보안 문제로 인해
1. Firefox DOM 모델의 속성 확장
2. currentStyle 속성은 실제 스타일 상태를 얻을 수 있습니다
3. IE는 innerText를 구현할 때 표시 방법을 고려합니다. 블록, 줄바꿈이 추가됩니다
4. textContent를 사용하면 어떨까요? textContent는 요소의 표시 모드를 고려하지 않기 때문에 IE와 완전히 호환되지 않습니다.
오늘 Firefox에서 복사를 지원하는 js 코드를 만들 때 innerText를 사용했습니다. 테스트 결과 Firefox는 innerHTML을 지원하지만 innerText는 지원하지 않는 것으로 확인되어 온라인에서 검색해 보니 아주 좋은 코드를 발견했습니다. 또한 회신에서 다음과 같은 호환성 코드를 얻었습니다. IE에서 오류 프롬프트의 원래 문제를 해결했습니다. 자세한 내용은 아래 기사를 참조하세요.
이 단락을 JS 파일에 추가하면 MOZILLA/FIREFOX에서 innerText를 사용할 수 있습니다.
코드 복사
코드
HTMLElement.prototype.__defineGetter__
(
"innerText",
if(childS[i].nodeType==1)
anyString = childS[i].tagName=="BR" ? 'n' : childS[i].innerText
else if(childS[i].nodeType==3)
anyString = childS[i ].nodeValue;
}
return anyString;
}
);
그러나 이 코드는 다음과 같이 HTMLElement가 정의되지 않았다는 메시지를 표시합니다. 구체적인 해결책.
코드 복사
코드는 다음과 같습니다.
function isIE(){ / /ie?
if (window.navigator.userAgent.indexOf("MSIE")>=1)
return true
{
var anyString = "";
var childS = this.childNodes;
for(var i=0; i{
if(childS[i].nodeType==1)
anyString = childS[i].tagName=="BR" ? 'n' : childS[i].innerText
else if(childS[i].nodeType==3)
anyString = childS[ i].nodeValue
}
return anyString;
}
)