>  기사  >  웹 프론트엔드  >  FireFox가 innerText 구현 code_javascript 기술을 지원하도록 합니다.

FireFox가 innerText 구현 code_javascript 기술을 지원하도록 합니다.

WBOY
WBOY원래의
2016-05-16 18:40:471169검색
firefox에 innerText 속성 구현
많은 코드를 작성하고 또 잊어버리는 게 너무 아깝기 때문에 메모하는 습관을 기르기로 했습니다.
지식 포인트:
0. 왜 innerText인가요? 보안 문제로 인해
1. Firefox DOM 모델의 속성 확장
2. currentStyle 속성은 실제 스타일 상태를 얻을 수 있습니다
3. IE는 innerText를 구현할 때 표시 방법을 고려합니다. 블록, 줄바꿈이 추가됩니다
4. textContent를 사용하면 어떨까요? textContent는 요소의 표시 모드를 고려하지 않기 때문에 IE와 완전히 호환되지 않습니다.
코드 복사 코드는 다음과 같습니다. :



cccddd< ;div>eeee



오늘 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
else return false; if (!isIE()){ HTMLElement.prototype.__defineGetter__ ( "innerText", function ()
{
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;
}
)

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