- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用 Node.cloneNode(true)
有据可查(主要在 SO 上)在 <input type="text">
上返回一个新的 <input>
与原始节点具有相同文本内容的节点,但克隆了一个 <select>
(在用户选择之后)返回一个新的 <select>
无需用户选择。这起初似乎不符合规范,因为根据 DOM 3 :
cloneNode
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent (parentNode is null) and no user data. User data associated to the imported node is not carried over.
为什么会发生这种情况的答案稍后会详细说明,但在 DOM 2 spec 中更清楚,
cloneNode
Cloning an Element copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child Text node.
鉴于这种措辞,我愿意接受这种行为,尽管我认为 <input>
不包含文本节点,因为 childNodes
<input>
的属性永远是空的 NodeList
不管它是否包含文本(在规范的措辞中,“有一个文本节点”)。
至少,我明白了<option>
用户选择被视为用户数据,因此不克隆是有道理的。在这种情况下,此“用户数据”包含在 selected
中<option>
的属性(property).
然而,当trying the behavior with radio buttons and checkboxes ,Chrome 38、FF 33、Safari 6.2 中的行为,完全违背了上述定义。克隆选中的复选框或选中的单选按钮会保持其选中状态。这似乎与规范相反,因为此信息是“用户数据”,它(如 <select>
)包含在属性中(在本例中为 checked
)。
我是否正确认为这不符合规范?如果没有,是否有其他地方定义了这种行为?如果是,是否有一个用例可以解释为什么 cloneNode()
它如何克隆用户输入字段的状态如此不一致?
编辑: 在针对我的浏览器套件进行测试时,我发现 Opera 12.15 的性能与 <select>
的预期一样。输入。即,它保留了克隆时的用户选择。
最佳答案
DOM Level 4 定义 cloning steps更清楚:
Specifications may define cloning steps for all or some nodes. The algorithm is passed copy, node, document, and optionally a clone children flag, as indicated in the clone algorithm.
To clone a node, optionally with a document and a clone children flag, run these steps:
If document is not given, let document be node's node document.
Let copy be a node that implements the same interfaces as node.
If copy is a document, set its node document and document to copy.
Otherwise, set copy's node document to document.Copy the following from node to copy, depending on the type of node:
Document
Its encoding, content type, URL, its mode (quirks mode, limited quirks mode, or no-quirks mode), and its type (XML document or HTML document).
DocumentType
Its name, public ID, and system ID.
Element
Its namespace, namespace prefix, local name, and its attribute list.
ProcessingInstruction
Its target and data.Any other node
—Run any cloning steps defined for node in other applicable specifications and pass copy, node, document and the clone children flag if set, as parameters.
If the clone children flag is set, clone all the children of node and append them to copy, with document as specified and the clone children flag being set.
Return copy.
The
cloneNode(deep)
method must return a clone of the context object, with the clone children flag set if deep is true.
select
和input
都是Element
,所以只有它们的namespace , namespace prefix , local name , 及其 attribute list应在步骤 4 中复制。
但是,在第 5 步中,可能会运行额外的克隆步骤。在 input
元素的情况下,这些步骤可能包括复制 value
和 selected
属性。
关于javascript - Node.cloneNode() 与 DOM 规范不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193301/
我们有一个 Java 项目,每天晚上使用 TeamCity 对 Java 类进行静态分析,以查找代码中容易出现的错误。我们想告诉 TeamCity 寻找开发人员可能引入的与 == 与 .equals
Promises/A+ 这是一个开放标准,旨在让不同开发者实现的 JavaScript Promise 能够无缝衔接并应用——由前辈们制定,为其他后来者提供参考 一个 promise 所
前言 🍊缘由 Git分支管理好,走到哪里都是宝 🏀事情起因: 最近翻看博客中小伙伴评论时,发现文章【规范】看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范
使用带有不存在的命名空间的命名空间限定关键字来定义规范是否被认为是不好的做法?我想在公共(public) domain 命名空间中定义实体映射...所以为了避免在合并规范时丢失数据,我使用约定 :en
有没有办法在调用 clojure.spec.test.alpha/check 时覆盖核心谓词函数的生成器? 可以通过 s/gen 中的路径覆盖谓词生成器: (gen/generate (s/gen
以内核 rpm 为例,它允许在一个系统上同时安装多个版本。规范文件中究竟是什么允许的? 我想打包一个已经存在的具有不同安装前缀的多个版本的项目。 最佳答案 百胜 找到了让 yum 安装而不是更新的方法
我正在尝试用 C# 编写 PDF 解析器,但我遇到了一个问题,我不确定如何解释规范。 除非另有说明,否则 PDF 文档中的用户空间为 1/72 英寸(即 1pt)。 Tf 运算符提供的比例将字体从标准
我正在编写一些代码,需要能够获取两个 pdf 并将它们附加到页面级别(例如,如果它们都是 2 页文档,则有一个 4 页文档,其中所有 4 页都与原始文档相同). 在不使用库的情况下,最好的方法是什么?
是否有序言语言语法,或接近它的通常用作引用的东西?我正在使用 SWI-prolog,所以有一个适合这种风格的会很好,否则一般的 prolog 语言语法/规范也能工作。 最佳答案 自 1995 年起,P
我需要一个函数来过滤参数和构建查询。我有 4 个参数,因此如果我尝试为每个条件实现查询,我将不得不写 16 (2^4)实现 - 这不是一个好主意。 我尝试使用界面改进我的代码 Specificatio
这个 ExtGState 对象对图像做了什么: > 我有 PDF 规范,但一点也不清楚。显然,这将身份函数(什么的身份?单位矩阵?)从 [0.0 1.0] 映射到 [0.0 1.0](相同),这是没有
只是想获得有关 ePub 规范的一些帮助。toc.ncx 是否必须具有 src(即 xhtml)。我观察到 .opf 文件中也提供了相同的内容 src。 最佳答案 是的,这是强制性的,这是一个设计问题
让我们看看莱宁根项目 map 的真实示例 :global-vars : ;; Sets the values of global vars within Clojure. This example
我正在开发一个 LOB 框架,它具有 SL 和 MVC 前端、WCF 后端以及在服务器上运行的几个服务模块。我一直在查看 Spec#,看它是否对我有任何帮助。不可空类型和检查异常本身非常好,但我还没有
Promises/A+规范是最小的规范之一。因此,实现它是理解它的最佳方法。福布斯·林德赛(Forbes Lindesay)的以下回答将引导我们完成实现Promises / A +规范Basic Ja
哪个文档指定了 MySQL definer 格式? 具体来说,definer admin@% 中的 % 是什么意思(以及为什么使用这个符号)? 最佳答案 这里MySQL使用的格式定义在the MySQ
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
在 css 规范中,什么会影响更多的 inline 样式或外部 !important 外部“style.css”: #di{color: green!important;} div 文本颜色是红色还
我正在努力思考 CSS 的一些细节,我从 W3 CSS Visual Formatting Spec 9.2.2 中找到了这部分摘录。特别迟钝: Inline-level boxes that are
这个问题在这里已经有了答案: Are (non-void) self-closing tags valid in HTML5? (8 个答案) 关闭 9 年前。 在 HTML5 中你应该使用 或
我是一名优秀的程序员,十分优秀!