【发布时间】:2016-01-16 17:44:51
【问题描述】:
在浏览器环境中,以这种方式创建 svg 元素svg = document.createElement('svg');
将其附加到正文并填充 svg 元素不起作用,因为svg.namespaceURI === 'http://www.w3.org/1999/xhtml'
但是这样做svg = document.createElementNS('http://www.w3.org/2000/svg','svg')
它会起作用的。
这是合理的,因为该元素应该以 svg 方式 处理,而不是 html 方式
同样,创建select = document.createElementNS('xxxx','select')
并附加到正文,该元素不会显示为众所周知的select 下拉列表,因为浏览器被告知它不是http://www.w3.org/1999/xhtml:select 元素,而是xxxx:select。
似乎节点处理被分派到不同的处理器,具体取决于节点本身的 NS(当被识别时)。
是否可以为Document 定义一个自定义命名空间URI,以便让其具有该特定nsURI 的节点以自定义方式处理,可能是通过一个函数?
【问题讨论】:
-
是的,应该可以。预期的结果是什么?
-
怎么样?我不会针对特定的结果,我正在评估拦截文档处理的不同方法,这个场景看起来很有趣
-
一种方法 developer.mozilla.org/en-US/docs/Web/API/Document/… , stackoverflow.com/questions/34055503/…;另见w3.org/TR/html4/sgml/dtd.html。可以定义“让浏览器以某种方式调度处理” 吗? “处理”包括什么?
-
是的,这是关于自定义元素的,我知道它们,这个话题很热门且有争议,支持稀少,但它与命名空间无关
-
处理器应该做一些像自定义元素这样的事情,但我希望它也能在纯 xml 文档中工作。正如我告诉你的那样,我正在寻找工作的替代候选人
标签: javascript html xml-namespaces