웹 브라우저별 버그 및 차이점
XHTML : form 하부의 노드에 대해서 innerHTML 로 새로운 노드를 생성할 때, form 을 생성할 경우 '알 수 없는 런타임 오류' 발생
1. 발생현상
form 하부의 노드 (직접적 하부 및 2Depth 이상의 하부를 모두 포함) 에 대해서 innerHTML 로 새로운 노드를 생성할 때, innerHTML 로 대입할 문자열 안에 form 태그가 어느 Depth 에 존재하든지간에 innerHTML 에 대입하는 순간 '알 수 없는 런타임 오류' 가 발생한다.
* 예
<form>
<div id="xx">
</div>
</form>
...
var node = document.getElementById("xx");
node.innerHTML = '<div id="xx2"><form><input type="text" /></form></div>'; <- 오류 발생
2. 브라우저 별 특성
o. 발생하는 브라우저
- Microsoft Internet Explorer 7
o. 발생하지 않는 브라우저
- Mozilla Firefox 2.0
- Opera 9.x
3. 해결방법
- 근본적인 해결방법은 없음
- 가급적 다음 사항을 지킨다.
1) form 하부 노드에 대해서는 form 을 생성하는 것을 최대한 피한다.
2) form 노드를 컴포넌트화 시킬 노드의 경계점으로 두지 않도록 한다.
XHTML : form 하부의 노드에 대해서 innerHTML 로 새로운 노드를 생성할 때, form 을 생성할 경우 '알 수 없는 런타임 오류' 발생
- IceEmperor
1. 발생현상
form 하부의 노드 (직접적 하부 및 2Depth 이상의 하부를 모두 포함) 에 대해서 innerHTML 로 새로운 노드를 생성할 때, innerHTML 로 대입할 문자열 안에 form 태그가 어느 Depth 에 존재하든지간에 innerHTML 에 대입하는 순간 '알 수 없는 런타임 오류' 가 발생한다.
* 예
<form>
<div id="xx">
</div>
</form>
...
var node = document.getElementById("xx");
node.innerHTML = '<div id="xx2"><form><input type="text" /></form></div>'; <- 오류 발생
2. 브라우저 별 특성
o. 발생하는 브라우저
- Microsoft Internet Explorer 7
o. 발생하지 않는 브라우저
- Mozilla Firefox 2.0
- Opera 9.x
3. 해결방법
- 근본적인 해결방법은 없음
- 가급적 다음 사항을 지킨다.
1) form 하부 노드에 대해서는 form 을 생성하는 것을 최대한 피한다.
2) form 노드를 컴포넌트화 시킬 노드의 경계점으로 두지 않도록 한다.
반응형