이 글은 웹사이트의 동작이나 표현(rendering)에 영향을 미칠 수 있는, Gecko 1.8과 Gecko 1.9 사이의 바뀌 점들을 소개합니다.
Firefox 3 for developers도 보세요.
이벤트
포착하는 load 이벤트 청취자
Gecko 1.8에서는 포착하는(capturing) load 이벤트 청취자를 그림에 설정하는 게 불가능했습니다. Gecko 1.9에서는 이 문제를 bug 234455로 고쳤습니다. 하지만 이벤트 청취자가 load 이벤트를 포착하게 설정하도록 어긋나게 만든 웹사이트에서 문제를 일으킬 수 있습니다. bug 335251에서 토론한 내용을 보세요. 이 문제를 고치려면 당해 문제가 있는 페이지가 포착하는 load 이벤트 청취자를 설정하지 않게 해야 합니다.
예를 들어 이것을:
window.addEventListener('load', yourFunction, true);
이렇게 바꿔야 합니다:
window.addEventListener('load', yourFunction, false);
이벤트 포착의 작동 원리를 알려면 DOM Level 2 Event capture를 보세요.
preventBubble
없앰
Gecko 1.8에는 이벤트가 위로 넘치지 못하게 하는 preventBubble
메소드가 이벤트에 있었습니다. Gecko 1.9에는 이 메소드가 없습니다. 그 대신에 표준인 stopPropagation()을 써야 합니다. 이 메소드는 Gecko 1.8에서도 제대로 작동합니다. bug 330494의 패치가 적용됐습니다. bug 105280도 보세요.
다른 몇 가지 오래된 이벤트 API를 더 이상 지원 안 함
window.captureEvents, window.releaseEvents, 그리고 window.routeEvent
는 Gecko 1.9에서 더 이상 지원하지 않습니다( ).
DOM
WRONG_DOCUMENT_ERR
Nodes from external documents should be cloned using document.importNode()
(or adopted using document.adoptNode()
) before they
can be inserted into the current document. For more on the Node.ownerDocument
issues, see the
W3C DOM FAQ.
Firefox doesn't currently enforce this rule (it did for a while during the development of Firefox 3, but too many sites break when this rule is enforced). We encourage Web developers to fix their code to follow this rule for improved future compatibility.
범위
intersectsNode
없앰
Gecko 1.8에서는 어떤 노드가 범위(range)에 엇갈리는 건지를 판단하는 데 intersectsNode
함수를 쓸 수 있었습니다. 그러나 이 함수의 반환값은 헷갈리고 좀처럼 쓸모가 없으므로 Gecko 1.9에서 없앴습니다. 그 대신에 좀 더 정확하고 표준 함수인 compareBoundaryPoints를 쓰세요. bug 358073의 패치로 없앴습니다.
compareBoundaryPoints
를 대신 쓰는 법을 보려면 intersectsNode를 설명하는 문서를 보세요.
compareNode
없앰
Gecko 1.8에서는 어떤 노드가 범위(range)에 엇갈리는 건지를 판단하는 데 compareNode
함수를 쓸 수 있었습니다. 그러나 이 함수의 반환값은 헷갈리고 좀처럼 쓸모가 없으므로 Gecko 1.9에서 없앴습니다. 그 대신에 좀 더 정확하고 표준 함수인 compareBoundaryPoints를 쓰세요. bug 358073의 패치로 없앴습니다.
compareBoundaryPoints
를 대신 쓰는 법을 보려면 compareNode를 설명하는 문서를 보세요.
HTML
<object>
의 많은 버그 고침
object
와 embed
요소를 표현하는 데 type
속성이 더 이상 필요하지 않습니다. JavaScript로 (<embed>
의) src
속성이나 (<object>
의) data
속성을 바꾸는 것도 이제 제대로 작동합니다. HTML 명세에 따라서 <object>
요소의 type
속성보다 서버가 보낸 Content-Type 헤더가 우선합니다(embed
의 경우는 아님).