FF의 outerHTML
1568 단어 prototype
1. var pro = window.HTMLElement.prototype;
2. pro.__defineGetter__("outerHTML", function(){
3. var str = "<" + this.tagName;
4. var a = this.attributes;
5. for(var i = 0, len = a.length; i < len; i++){
6. if(a[i].specified){
7. str += " " + a[i].name + '="' + a[i].value + '"';
8. }
9. }
10. if(!this.canHaveChildren){
11. return str + " />";
12. }
13. return str + ">" + this.innerHTML + "</" + this.tagName + ">";
14. });
15. pro.__defineSetter__("outerHTML", function(s){
16. var r = this.ownerDocument.createRange();
17. r.setStartBefore(this);
18. var df = r.createContextualFragment(s);
19. this.parentNode.replaceChild(df, this);
20. return s;
21. });
22. pro.__defineGetter__("canHaveChildren", function(){
23. return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
24. });
그러나 getter 실현 방법은 다음과 같아야 한다고 느낀다: clone 현재 div를 하나의 tempdiv에 넣고 tempdiv의 innerHTML을 취하면 효율이 매우 높을 것이다
setter 실현 방법: div에 넣고 append Child 노드를 순환할 수도 있지만 효율은createContextualFragment와 같은 높지 않다
깊이 연구하지 못했으니 지도를 환영합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기능 재검토(프로토타입 아님) 🤥빠른 수정을 위한 몇 가지 참고 사항 사용자 지정 속성이 있는 함수 이것은 대부분의 경우 런타임 바인딩이므로 someKey는 aFunction 또는 aFunction.prototype의 속성이 아닙니다. 접두사 cu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.