몰랐는데... 파이어폭스(FF)에서는
outerHTML을 지원하지 않는다(innerHTML은지원)
그래서 인터넷을 뒤져봤는데... 리턴하는 소스는 많이 나왔는데
값을 덮을수 있는 방법은 잘 나오지 않아서
인터넷 뒤져서 샘플코드를 만든 소스...
해당 outerhtml을 알고싶으면 getouterHtml
해당 outerhtml에 텍스를 치환하고 싶으면 setOuterHtml
를 사용하면 되고, 기타 outerhtml을 지원할 경우는 그 함수를 쓰도록
처리한 소스....
<html>
<title>outerHTML 파이어폭스 대응</title>
<script>
/**************************************
* 샘플 코드 및 펑션 생성 @ 정민철
* http://tost.tistory.com
*
* 원본 참조소스
*-----------------------------------------------------------
* http://snipplr.com/view/5460/outerhtml-in-firefox/
* http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56477
***************************************/
//ff대응 outerhtml결과
function getouterHtml(obj)
{
var html = null;
//널처리
if (obj == null) return null;
if (typeof(obj.outerHTML) == "string")
{//스트링값을 가져온다면 IE로 가정함
html = obj.outerHTML;
//alert("ie"); //디버그용
}
else
{
html = (new XMLSerializer).serializeToString(obj);
//alert("ff"); //디버그용
}
return html;
}
<title>outerHTML 파이어폭스 대응</title>
<script>
/**************************************
* 샘플 코드 및 펑션 생성 @ 정민철
* http://tost.tistory.com
*
* 원본 참조소스
*-----------------------------------------------------------
* http://snipplr.com/view/5460/outerhtml-in-firefox/
* http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56477
***************************************/
//ff대응 outerhtml결과
function getouterHtml(obj)
{
var html = null;
//널처리
if (obj == null) return null;
if (typeof(obj.outerHTML) == "string")
{//스트링값을 가져온다면 IE로 가정함
html = obj.outerHTML;
//alert("ie"); //디버그용
}
else
{
html = (new XMLSerializer).serializeToString(obj);
//alert("ff"); //디버그용
}
return html;
}
//ff대응 outerhtml 삽입
function setOuterHtml(obj, html)
{
if (obj == null) return; //null처리
if (typeof(obj.outerHTML) == "string")
{//스트링값을 가져온다면 IE로 가정함
//alert("ie"); //디버그용
obj.outerHTML = html
}
else
{
//alert("ff"); //디버그용
var el = document.createElement('div');
el.innerHTML = html;
var range = document.createRange();
range.selectNodeContents(el);
var documentFragment = range.extractContents();
obj.parentNode.insertBefore(documentFragment, obj);
obj.parentNode.removeChild(obj);
}
}
function setOuterHtml(obj, html)
{
if (obj == null) return; //null처리
if (typeof(obj.outerHTML) == "string")
{//스트링값을 가져온다면 IE로 가정함
//alert("ie"); //디버그용
obj.outerHTML = html
}
else
{
//alert("ff"); //디버그용
var el = document.createElement('div');
el.innerHTML = html;
var range = document.createRange();
range.selectNodeContents(el);
var documentFragment = range.extractContents();
obj.parentNode.insertBefore(documentFragment, obj);
obj.parentNode.removeChild(obj);
}
}
</script>
<body>
<body>
<div id="test" style="background:yellow;">
원래본문
</div>
원래본문
</div>
<script>
var divobj = document.getElementById("test");
</script>
<a href="javascript:alert(getouterHtml(divobj))">outer값확인</a>
<a href="javascript:setOuterHtml(divobj, 'htmltest')">outer값 변경</a>
var divobj = document.getElementById("test");
</script>
<a href="javascript:alert(getouterHtml(divobj))">outer값확인</a>
<a href="javascript:setOuterHtml(divobj, 'htmltest')">outer값 변경</a>
</body>
<html>
<html>
개인적으로는 웹브라우저가 하나만 남았으면 좋겠다.