> 웹 프론트엔드 > JS 튜토리얼 > js 온라인 HTML(서식 있는 텍스트, WYSIWYG) 알아보기 editor_basic 지식

js 온라인 HTML(서식 있는 텍스트, WYSIWYG) 알아보기 editor_basic 지식

WBOY
풀어 주다: 2016-05-16 17:46:14
원래의
1352명이 탐색했습니다.

당신이 원하는 것은 WYSIWYG HTML 편집기입니다. 간단히 말해 몇 가지 기본 단계가 필요합니다.

1. 효과를 표시하면서 편집할 수 있는 편집 상자가 필요합니다. 텍스트 영역은 작동하지 않습니다. 일반 텍스트를 입력하는 데에만 사용할 수 있으며 메모장처럼 색상, 기울임꼴 등의 텍스트 스타일을 표시할 수 없습니다.
이를 달성하려면 iframe을 사용하고 iframe의 designMode 속성을 수정하여 편집할 수 있습니다.

코드 복사 코드는 다음과 같습니다.


<script>myEditer.document.designMode = 'on';</script>

그래서 이 iframe 영역에 글쓰기가 있습니다.

2. 스타일을 추가할 텍스트를 선택합니다. 일반적으로 텍스트의 스타일을 편집하기 위해 WORD를 사용할 때 일반적으로 먼저 WORD를 입력한 다음 스타일을 편집합니다. 따라서 처리할 텍스트를 선택하는 방법이 필요합니다. JS의 Selection.createRange()는 텍스트를 선택하고 객체를 반환할 수 있습니다. 객체의 text 속성에 액세스하여 선택한 텍스트를 가져올 수 있습니다.
코드 복사 코드는 다음과 같습니다.


🎜> myEditer.document.designMode = 'on';
function Bold(){
var sel = myEditer.document.selection.createRange()
alert(sel.text);



3. 선택한 텍스트의 스타일을 변경합니다. Selection.createRange()는 텍스트를 선택하고 객체를 반환합니다. 이 객체에는 선택한 텍스트의 스타일을 변경하는 데 사용할 수 있는 execCommand() 메서드가 있습니다.


🎜> myEditer.document.designMode = 'on';
function Bold(){
var sel = myEditer.document.selection.createRange()
//alert(sel.text); >sel .execCommand("Bold")
}




execCommand()의 일반적인 사용법
:
글꼴 - 송나라 , 헤이룽장 , 일반 스크립트 등
execCommand("fontname","",font)
글꼴 크기 - 글꼴 크기
execCommand("fontsize","",font size)강조execCommand("Bold")
기울임꼴
execCommand("Italic")
Underline
execCommand("Underline")
취소선
execCommand("StrikeThrough")
왼쪽
execCommand("JustifyLeft")
오른쪽
execCommand("JustifyRight")
center
execCommand("JustifyCenter")
cut
execCommand("Cut")
복사
execCommand("Copy")
붙여넣기
execCommand("Paste")
작업 취소--IE5.0 이후에는 무한히 취소할 수 있습니다
execCommand("Undo")
반복 작업
execCommand("Redo")

버튼을 사용하여 위의 각 사용법을 구현하면 간단한 시각적 텍스트 편집기가 완성됩니다.

Document.execCommand() 사용법




코드 복사
코드는 다음과 같습니다.

위치를 사용하면 절대 위치에 있는 개체를 드래그하여 이동할 수 있습니다.
AbsolutePosition은 요소의 위치 속성을 "absolute"(절대)로 설정합니다.
BackColor는 현재 선택된 영역의 배경색을 설정하거나 가져옵니다.
BlockDirLTR은 현재 지원되지 않습니다.
BlockDirRTL은 현재 지원되지 않습니다.
굵게는 현재 선택한 영역을 굵게 표시하도록 전환합니다.
찾아보기 모드는 현재 지원되지 않습니다.
복사 현재 선택 항목을 클립보드에 복사합니다.
CreateBookmark는 북마크 앵커를 생성하거나 현재 선택 또는 삽입 지점에 대한 북마크 앵커의 이름을 가져옵니다.
CreateLink 현재 선택 항목에 하이퍼링크를 삽입하거나 사용자가 현재 선택 항목에 삽입할 하이퍼링크의 URL을 지정할 수 있는 대화 상자를 표시합니다.
잘라내기 현재 선택 항목을 클립보드에 복사하고 삭제합니다.
삭제 현재 선택된 영역을 삭제합니다.
DirLTR은 현재 지원되지 않습니다.
DirRTL은 현재 지원되지 않습니다.
EditMode는 현재 지원되지 않습니다.
FontName은 현재 선택한 영역의 글꼴을 설정하거나 가져옵니다.
FontSize는 현재 선택한 영역의 글꼴 크기를 설정하거나 가져옵니다.
ForeColor는 현재 선택된 영역의 전경(텍스트) 색상을 설정하거나 가져옵니다.
FormatBlock은 현재 블록 형식 지정 태그를 설정합니다.
들여쓰기는 선택한 텍스트의 들여쓰기를 늘립니다.
InlineDirLTR은 현재 지원되지 않습니다.
InlineDirRTL은 현재 지원되지 않습니다.
InsertButton은 버튼 컨트롤로 현재 선택 항목을 덮습니다.
InsertFieldset는 현재 선택된 영역을 상자로 덮습니다.
InsertHorizontalRule은 현재 선택 항목을 수평선으로 덮습니다.
InsertIFrame은 현재 선택 항목을 인라인 프레임으로 덮습니다.
InsertImage는 현재 선택 항목을 이미지로 덮습니다.
InsertInputButton은 버튼 컨트롤로 현재 선택 항목을 덮습니다.
InsertInputCheckbox는 체크박스 컨트롤로 현재 선택된 영역을 덮습니다.
InsertInputFileUpload는 파일 업로드 제어로 현재 선택 항목을 덮어씁니다.
InsertInputHidden은 현재 선택한 영역을 덮기 위해 숨겨진 컨트롤을 삽입합니다.
InsertInputImage는 이미지 컨트롤로 현재 선택 항목을 다룹니다.
InsertInputPassword는 비밀번호 제어로 현재 선택을 덮어씁니다.
InsertInputRadio는 라디오 버튼 컨트롤로 현재 선택된 영역을 다룹니다.
InsertInputReset은 재설정 컨트롤로 현재 선택을 덮어씁니다.
InsertInputSubmit은 제출 컨트롤로 현재 선택 항목을 덮어씁니다.
InsertInputText는 텍스트 제어로 현재 선택 항목을 덮습니다.
InsertMarquee는 현재 선택된 영역을 빈 자막으로 덮습니다.
InsertOrderedList는 현재 선택한 영역이 번호가 매겨진 목록인지 일반 형식의 블록인지 전환합니다.
InsertParagraph는 현재 선택 항목을 줄 바꿈으로 덮어씁니다.
InsertSelectDropdown은 드롭다운 상자 컨트롤로 현재 선택된 영역을 덮습니다.
InsertSelectListbox는 목록 상자 컨트롤로 현재 선택된 영역을 다룹니다.
InsertTextArea는 여러 줄의 텍스트 입력 컨트롤로 현재 선택된 영역을 다룹니다.
InsertUnorderedList는 현재 선택한 영역이 글머리 기호 목록인지 일반 형식의 블록인지 전환합니다.
기울임꼴은 현재 선택 영역을 기울임꼴 표시로 전환합니다.
JustifyCenter 서식 지정 블록에서 현재 선택한 영역을 중앙에 배치합니다.
JustifyFull은 현재 지원되지 않습니다.
JustifyLeft는 현재 선택한 영역의 서식 블록을 왼쪽에 정렬합니다.
JustifyNone은 현재 지원되지 않습니다.
JustifyRight 현재 선택한 영역이 위치한 서식 블록을 오른쪽 정렬합니다.
LiveResize는 이동이나 크기 조정이 완료된 후에만 업데이트하는 것이 아니라 크기 조정이나 이동 중에 요소의 모양을 지속적으로 업데이트하도록 MSHTML 편집기를 강제합니다.
MultipleSelection을 사용하면 사용자가 Shift 또는 Ctrl 키를 누른 상태에서 한 번에 두 개 이상의 사이트 선택 가능 요소를 선택할 수 있습니다.
열었습니다.
내어쓰기는 선택한 영역이 위치한 서식 블록의 들여쓰기를 줄입니다.
OverWrite는 텍스트 상태의 삽입과 덮어쓰기를 전환합니다.
붙여넣기는 현재 선택 항목을 클립보드 내용으로 덮어씁니다.
PlayImage는 현재 지원되지 않습니다.
인쇄는 사용자가 현재 페이지를 인쇄할 수 있도록 인쇄 대화 상자를 엽니다.
다시 실행하세요.
새로 고침은 현재 문서를 새로 고칩니다.
RemoveFormat 현재 선택 항목에서 서식 지정 태그를 제거합니다.
RemoveParaFormat은 현재 지원되지 않습니다.
다른 이름으로 저장은 현재 웹페이지를 파일로 저장합니다.
SelectAll은 문서 전체를 선택합니다.
SizeToControl은 현재 지원되지 않습니다.
SizeToControlHeight는 현재 지원되지 않습니다.
SizeToControlWidth는 현재 지원되지 않습니다.
그만 멈춰.
StopImage는 현재 지원되지 않습니다.
StrikeThrough는 현재 지원되지 않습니다.
현재 구독은 지원되지 않습니다.
위첨자는 현재 지원되지 않습니다.
UnBookmark는 현재 선택 항목에서 모든 북마크를 삭제합니다.
밑줄은 현재 선택된 영역의 밑줄 표시 여부를 전환합니다.
실행 취소 실행 취소.
연결 해제는 현재 선택 항목에서 모든 하이퍼링크를 삭제합니다.
선택 취소는 현재 선택된 영역의 선택 상태를 해제합니다.

간단한 오픈소스 편집기
코드 복사 코드는 다음과 같습니다:
 


<머리>

편집자





" div "");
this.ed.close();
this. ed.contentEditable = true;
this.ed.designMode = "on"; //设置编辑区为可编辑
for (var i = 0, l = data.length; i < l; i ) {
var o = create("span", this.toolbar);
Attr(o, {
title: data[i].title,
active: false,
선택 불가능: "on"
});
o.className = "tag " data[i].Class;
addListener(o, "mouseover", Bind(this, this.Changebgcolor, o, data[i) ].hover));
addListener(o, "mouseout", Bind(this, this.Changebgcolor, o, data[i].Class))
addListener(o, "click", Bind(this) , this[data[i].action], o, data[i].args))
}
//////////////////// /////생성工具栏
addListener(this.iframe.contentWindow, "focus", Bind(this,
function() {
this.isfocus = true;
}));
addListener(this.iframe.contentWindow, "blur", Bind(this,
function() {
this.isfocus = false;
}));
addListener(this.ed, 'mousedown', Bind(this, this.Show));
addListener(this.ed, 'mouseup', Bind(this, this.Show));
////////////////////////这2个事件是来判断光标所在位置是否别编辑
addListener(this.original) , '클릭', Bind(this, this.Showoriginal, this.original)); //显示源代码
},
Changebgcolor: function(o, name, p) {
if (o.active) return;
o.className = "태그 " 이름;
},
표시: function() {
varspans = $$(this.toolbar, "span"),
Is;
var elm = [[spans[0], "Bold", "tagspan0_active", "tagspan0"], [spans[1], "Italic", "tagspan1_active", "tagspan1"], [ 스팬[2], "밑줄", "태그 스팬2_active", "태그 스팬2"], [스팬[12], "InsertUnorderedList", "태그 스팬3_active", "태그 스팬12"], [스팬[13], "InsertOrderedList" , "태그span4_active", "태그span13"]];
for (var i = 0, l = elm.length; i < l; i ) {
Is = this.ed.queryCommandState(elm[i][1]);
elm[i][0].className = ? 느릅나무[i][2] : 느릅나무[i][3];
elm[i][0].active = 입니다;
}
},
Showoriginal: function(o) {
if (!this.toolbarlayer) {
this.toolbarlayer = create("div", document.body);
this.toolbarlayer.className = "toolbarlayer";
var pos = Getpos(this.toolbar);
Css(this.toolbarlayer, {
width: this.option.width "px",
left: pos.x "px",
top: pos.y "px"
});
}
if (o.checked) {
this.iframe.style.display = "없음";
this.textarea.style.display = "차단";
this.toolbarlayer.style.display = "차단";
this.textarea.value = this.ed.body.innerHTML;
}
else {
this.iframe.style.display = "차단";
this.textarea.style.display = "없음";
this.toolbarlayer.style.display = "없음";
this.ed.body.innerHTML = this.textarea.value;
}
},
Exec: function(o, cmd, para) {
try {
this.ed.execCommand(cmd, false, para);
this.Show();
}
catch(err) {
return;
}
},
InsertImage: function(o) {
if (Sys.IE) { ! this.isfocus && this.iframe.contentWindow.focus();
this.rang = this.ed.selection.createRange();
}
this.lightbox.Show();
this.makebody(this.Imagepopoup, "350px", "插入图文", "InsertImage", "Imagepopoup");
},
CreateLink: function(o) {
if (Sys.IE) this.rang = this.ed.selection.createRange();
this.lightbox.Show();
this.makebody(this.Linkpopoup, "350px", "插入连接", "CreateLink", "Linkpopoup");
},
글꼴 색상: function(o) {
var self = this;
if (!this.fontcolorpopup) {
var color = new popoup({
width: "210px",
title: "颜color选择"
});
this.fontcolorpopup = color.container;
var pos = Getpos(o);
Css(color.container, {
왼쪽: pos.x "px",
상단: pos.y o.offsetHeight "px"
});
var bgcolor = ["00", "33", "66", "99", "CC", "FF", "00", "33", "66", "99", "CC" , "FF"];
$$(color.container, "div")[1].appendChild(createtab(12, 18,
function(tab) {
Attr(tab, {
cellPadding: 0,
cellSpacing: 1,
테두리: 0,
bgColor: "#333333"
})
},
null,
function(i, j, td) {
var color = i < 6 ? "#" bgcolor[Math.floor(j / 6)] bgcolor[Math.floor(j % 6)] bgcolor[i] : "#" bgcolor[Math.floor( j / 6) 3] bgcolor[Math.floor(j % 6)] bgcolor[i - 6]
Attr(td, {
너비: 10,
높이: 10,
선택 불가 : "on"
});
td.style.groundColor = color;
addListener(td, 'click', Bind(self, self.Execa, color, "fontColor")); >addListener(td, 'mousedown', BindAsEventListener(self, self.Bubble));
}))
}
else this.fontcolorpopup.style.display = "block";
this.Fpop = Bind(this, this.Hide);
addListener(this.ed, '클릭', this.Fpop);
addListener(document, 'mousedown', this.Fpop);
},
Expression: function(o) {
var self = this;
if (!this.facebgpopup) {
var expr = new popoup({
width: "190px",
title: "插入表情"
});
this.facebgpopup = expr.container;
var pos = Getpos(o);
Css(expr.container, {
left: pos.x + "px",
top: pos.y + o.offsetHeight + "px"
});
$$(expr.container, "div")[1].appendChild(createtab(1, this.option.facebg.length,
function(tab) {
Attr(tab, {
cellPadding: 0,
cellSpacing: 1,
border: 0,
bgColor: "#FFFFFF"
});
},
null,
function(i, j, td) {
Css(td, {
backgroundImage: "url(http://album.hi.csdn.net/app_uploads/wtcsy/20090719/220510752.p.gif)",
backgroundPosition: self.option.facebg[j].bgimg
});
Attr(td, {
width: self.option.facebg[i].wl,
height: self.option.facebg[i].wl,
unselectable: "on"
});
addListener(td, 'click', Bind(self, self.Execa, self.option.facebg[j].src, "Expression"));
addListener(td, 'mousedown', BindAsEventListener(self, self.Bubble))
}));
}
else this.facebgpopup.style.display = "block";
this.Fpop = Bind(this, this.Hide);
addListener(this.ed, 'click', this.Fpop);
addListener(document, 'mousedown', this.Fpop);
},
Layout: function() {
var child = this.ed.body.childNodes;
for (var i = 0, l = child.length; i < l; i++) {
if (child[i].nodeName == "DIV" || child[i].nodeName == "P") child[i].style.textIndent = child[i].style.textIndent == "2em" ? "": "2em";
}
},
Fontsize: function(o) {
if (!this.fontsizepopup) {
var size = new popoup({
width: "210px",
title: "字号"
}),
a;
this.fontsizepopup = size.container;
var pos = Getpos(o);
Css(size.container, {
left: pos.x + "px",
top: pos.y + o.offsetHeight + "px"
});
for (var i = 0, l = this.option.fontsizedata.fontSize.length; i < l; i++) {
a = create("a", $$(size.container, "div")[1]);
a.className = "c" + (i + 1);
a.setAttribute("href", "javascript:void(0);")
a.innerHTML = this.option.fontsizedata.fontSize[i];
addListener(a, "click", Bind(this, this.Execa, i, "fontSize"));
addListener(a, 'mousedown', BindAsEventListener(this, this.Bubble));
}
} else this.fontsizepopup.style.display = "block";
this.Fpop = Bind(this, this.Hide);
addListener(this.ed, 'click', this.Fpop);
addListener(document, 'mousedown', this.Fpop);
},
FontName: function(o) {
if (!this.fontnamepopup) {
var name = new popoup({
width: "200px",
title: "字体"
}),
a;
this.fontnamepopup = name.container;
var pos = Getpos(o);
Css(name.container, {
left: pos.x + "px",
top: pos.y + o.offsetHeight + "px"
});
for (var i = 0, l = this.option.fontsizedata.fontname.length; i < l; i++) {
a = create("a", $$(name.container, "div")[1]);
a.className = "n";
a.setAttribute("href", "javascript:void(0);");
a.innerHTML = this.option.fontsizedata.fontname[i];
addListener(a, "click", Bind(this, this.Execa, this.option.fontsizedata.fontname[i], "fontname"));
addListener(a, 'mousedown', BindAsEventListener(this, this.Bubble));
}
} else this.fontnamepopup.style.display = "block";
this.Fpop = Bind(this, this.Hide);
addListener(this.ed, 'click', this.Fpop);
addListener(document, 'mousedown', this.Fpop);
},
makebody: function(o, w, t, f, n) {
if (!o) {
var self = this;
this[n] = new popoup({
width: w,
title: t
});
this[n].pos();
$$(this[n].container, "div")[1].innerHTML = "
连接地址 
 
"
this[n].elm = [$$(this[n].container, "input")[0], $$(this[n].container, "img")[0], $$(this[n].container, "img")[1]];
this[n].elm[0].focus()
addListener(this[n].elm[1], 'click', Bind(this, this.Execa, null, f));
addListener(this[n].elm[2], 'click',
function() {
self.lightbox.Close();
self[n].Close();
});
}
else with(this[n]) {
pos();
Show();
elm[0].value = "";
elm[0].focus();
}
},
Addtable: function() {
if (Sys.IE) { ! this.isfocus && this.iframe.contentWindow.focus();
this.rang = this.ed.selection.createRange();
}
this.lightbox.Show();
if (Sys.IE) this.rang = this.ed.selection.createRange();
if (!this.tablepopup) {
var self = this;
this.tablepopup = new popoup({
width: "300px",
title: "插入表格"
});
this.tablepopup.pos();
$$(this.tablepopup.container, "div")[1].innerHTML = "
行数: 列数:
表格的宽度: px
表行的高度: px
 
"
var o = $$(this.tablepopup.container, "input");
this.tablepopup.elm = [o[0], o[1], o[2], o[3], $$(this.tablepopup.container, "img")[0], $$(this.tablepopup.container, "img")[1]];
addListener(this.tablepopup.elm[4], 'click', Bind(this, this.Execa, null, "CreateTable"));
addListener(this.tablepopup.elm[5], 'click',
function() {
self.lightbox.Close();
self.tablepopup.Close();
});
}
else with(this.tablepopup) {
pos();
Show();
elm[0].focus();
}
this.Fpop = Bind(this, this.Hide);
addListener(this.ed, 'click', this.Fpop);
addListener(document, 'mousedown', this.Fpop);
},
Hide: function(o) {
this.facebgpopup && (this.facebgpopup.style.display = "none");
this.fontsizepopup && (this.fontsizepopup.style.display = "none");
this.fontnamepopup && (this.fontnamepopup.style.display = "none");
this.fontcolorpopup && (this.fontcolorpopup.style.display = "none");
removeListener(this.ed, 'click', this.Fpop);
removeListener(document, 'mousedown', this.Fpop);
},
Bubble: function(e) {
if (Sys.IE) {
e.cancelBubble = true
} else {
e.stopPropagation()
}
},
Execa: function(num, stamp) {
var exec = {
fontname: function() {
this.fontnamepopup.style.display = "none";
this.ed.execCommand('FontName', false, num);
},
fontSize: function() {
this.fontsizepopup.style.display = "none";
this.ed.execCommand("FontSize", false, num + 1)
},
fontColor: function() {
this.fontcolorpopup.style.display = "none";
this.ed.execCommand("ForeColor", false, num);
},
CreateLink: function() {
this.lightbox.Close();
this.Linkpopoup.Close();
if (this.Linkpopoup.elm[0].value == "") return;
if (Sys.IE) {
this.rang.execCommand("CreateLink", false, this.Linkpopoup.elm[0].value);
this.rang.parentElement().target = "_blank ";
}
else {
this.ed.execCommand("CreateLink", false, this.Linkpopoup.elm[0].value);
this.rang = this.iframe.contentWindow.getSelection().getRangeAt(0);
this.rang.commonAncestorContainer.parentNode.target = "_blank ";
}
},
InsertImage: function() {
this.lightbox.Close();
this.Imagepopoup.Close();
if (this.Imagepopoup.elm[0].value == "") return;
Sys.IE ? this.rang.execCommand("InsertImage", false, this.Imagepopoup.elm[0].value) : this.ed.execCommand("InsertImage", false, this.Imagepopoup.elm[0].value);
},
Expression: function() {
this.facebgpopup.style.display = "none";
Sys.IE && (this.iframe.contentWindow.focus());
this.ed.execCommand("InsertImage", false, num);
},
CreateTable: function() {
this.lightbox.Close();
this.tablepopup.Close();
var o = this.tablepopup.elm,
p = null;
if (Sys.IE) {
this.rang.execCommand("InsertImage", false, "http://xxx.com/xxxxx.gif");
p = this.rang.parentElement();
}
else {
this.ed.execCommand("InsertImage", false, "http://xxx.com/xxxxx.gif");
p = this.iframe.contentWindow.getSelection().getRangeAt(0).commonAncestorContainer;
}
var tab = createtab(o[0].value, o[1].value,
function(tab) {
Attr(tab, {
cellPadding: 0,
cellSpacing: 1,
border: 0,
bgColor: "#CCCCCC",
width: o[2].value
});
},
null,
function(i, j, td) {
td.height = o[3].value;
td.width = o[2].value / o[1].value;
td.style.backgroundColor = "#FFFFFF"
},
this.ed);
var imgs = p.getElementsByTagName("img");
for (var i = 0, l = p.childNodes.length; i < l; i++) {
if (imgs[i].src == "http://xxx.com/xxxxx.gif") {
p.replaceChild(tab, imgs[i])
}
}
p.insertBefore(this.ed.createElement("br"), tab.nextSibling);
}
};
Bind(this, exec[stamp])();
}
});
var popoup = new Class({
options: {
width: "200px",
title: "标题"
},
initialize: function(options) {
this.container = create("div", document.body);
Extend(this.options, options);
this.title = this.options.title;
this.container.className = "pp";
this.container.style.width = this.options.width;
this.container.innerHTML = "
";
this.w = this.container.offsetWidth;
this.h = this.container.offsetHeight;
$$(this.container, "span")[0].innerHTML = this .title;
},
pos: function() {
var str = "left:" (Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth) - this.w) / 2 "px;top:" ((Math.min(document.documentElement.scrollHeight, document.documentElement.clientHeight) - this.h) / 2 document.documentElement.scrollTop) "px"
Css(this.container, str);
},
표시: function() {
this.container.style.display = "";
},
닫기: function() {
this. Container.style.display = "none";
}
})
var LightBox = {
obj: null,
config: {
색상: "#fff",
불투명도: 80,
zIndex: 5
},
init: function(options) {
Extend(this.config, options || {})
Extend(this, this.config);
this.config 삭제;
this.obj = document.body.insertBefore(document.createElement("div"), document.body.childNodes[0])
var str = "표시:없음; z-index:" this.zIndex ";왼쪽:0px;top:0px;위치:고정;너비:100%;높이:100%;배경색:" this.Color(Sys.IE ? ";필터: 알파 (불투명도:" this.Opacity ")": ";opacity :" this.Opacity / 100);
Css(this.obj, str);
if (Sys.IE6) {
this. obj.style.position = "절대";
var _self = this;
this._resize = function() {
_self.obj.style.width = Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth) "px";
_self.obj.style.height = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) "px"
}; .obj.innerHTML = '