은,이 같은 createElementNS
를 사용하여 새로운 요소를 생성 : I 네임 스페이스 번째 인수 접두사 않고 만든 하나 생성 요소 사이의 차이를 이해 할 수접두사가있는 createElementNS와 그렇지 않은 createElementNS의 차이점은 무엇입니까? XHTML과 홈 페이지에 링크 된 JS에서
const NS = 'http://my.site/xmlns';
const el1 = document.createElementNS(NS, 'custom');
const el2 = document.createElementNS(NS, 'p:custom');
그것. 예를 들어, 이러한 CSS 규칙 모두 요소에 동일한 효과가 있습니다 document.getElementsByTagNameNS(NS, 'p:custom')
빈 HtmlCollection
를 반환하는 반면,
@namespace p url('http://my.site/xmlns');
p|custom { background: yellow; }
다음, document.getElementsByTagNameNS(NS, 'custom')
의 통화가 HtmlCollection
와 두 요소를 반환를, 무엇을 나에게 이상한 것 같다.
그래서 네임 스페이스 접두어가있는 요소와 그렇지 않은 요소를 만드는 것의 차이점은 무엇입니까?
첫 번째 인수에 지정된 네임 스페이스가 문서의 앞부분에 네임 스페이스 접두어로 선언 된 경우 정규화 된 이름 (QName)이 반드시'createElementNS()'의 네임 스페이스 접두사로 정규화 될 필요는 없습니다. https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS –
@Scott Marcus : 아, 근데 왜? 명세 나 MDN 모두 명시 적으로 진술되어 있지 않으므로 내가 빠진 것이 있어야합니다. – BoltClock
네, 들리는데요. MDN 페이지는 표현 된 QName없이 사용되고 있지만 동일한 네임 스페이스가 문서에서 이미 선언 된 (접두사가있는) 것으로 표시합니다. 따라서 네임 스페이스를 지정하는 경우 접두어로 이미 선언되었습니다. 사용자가 지정하는 새 요소는 암시 적으로 올바른 QName을가집니다. –