问题标签 [dom4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
12534 浏览

javascript - 创建一个 HTMLCollection

我正在尝试填充Element.prototype.children应该返回HTMLCollection

有一个window.HTMLCollection

然而

测试 Firefox 7 和 Chrome

除了 shimming HTMLCollection,还有什么方法可以与之交互吗?

如果您可以提出解决方案,还请提供有关此 github 问题的反馈

0 投票
3 回答
2164 浏览

javascript - 何时使用 querySelectorAll

在我写的一段示例代码中

我在想我可以用

var as = document.querySelectorAll("a.false");

现在在阅读以下事实后

  • 假装浏览器支持不是问题(我们有 shims 和 polyfills)。
  • 假装你不在你的通用 jQuery 思维模式中,你应该使用 QSA 来获取每个元素。
  • 我要写qsa而不是document.querySelectorAll因为我很懒。

问题:我什么时候应该优先使用 QSA 而不是常规方法?

很明显,如果你做错了,或者qsa("a")你做错了,因为有更好的方法(byTagName、byClassName、byId)。qsa(".class")qsa("#id")

很明显,这qsa("div > p.magic")是一个合理的用例。

问题:但是qsa("tagName.class")QSA 是一个好的用例吗?

此外,还有这些东西叫做NodeIterator

我问了一个关于QSA 与 NodeIterator的问题

0 投票
2 回答
4163 浏览

javascript - 何时使用 NodeIterator

基准比较 QSA & .forEachvs aNodeIterator

现在要么NodeIterator很烂,要么我做错了。

问题:我应该什么时候使用NodeIterator?

如果您不知道,DOM4 指定了NodeIterator是什么。

0 投票
2 回答
2168 浏览

javascript - 跨浏览器比较文档位置

DOM4 比较文档位置

我想实现 compareDocumentPosition。Resig 在这方面取得了良好的开端。我已经拿走了他的代码并整理了它

这适用于Element但不适用于Textor DocumentFragment.sourceIndex这是因为 IE8在这些节点上没有给出。(它也没有给出.contains,但我已经解决了这个问题)

如何有效地编写与DOCUMENT_POSITION_FOLLOWINGDOCUMENT_POSITION_PRECEDING对应的+=4和位。+=2

作为额外参考,这两个由 DOM4 定义为的树顺序定义

如果 A 和 B 在同一棵树中并且 A 在树顺序中位于 B 之前,则对象 A 在对象 B 之前。

如果 A 和 B 在同一棵树中并且 A 按树顺序在 B 之后,则对象 A 跟随对象 B。

树顺序是前序,深度优先遍历。

大多数现代浏览器都实现了这一点(包括 IE9)。所以你只需要在 IE8 中工作的东西(我不关心 IE6/7,但如果它工作得很棒!)

0 投票
1 回答
260 浏览

javascript - 模块化 javascript 事件库

我想要一个执行DOM4 事件的小型库。如果没有合理的DOM3 事件子集就可以了。

它存在吗?

无效的答案

  • 使用大型框架 X(jQuery、mootools、原型等)
  • 一些在 IE8 中不起作用的库
  • 不允许捕获和冒泡阶段的库。

它只需要在IE8中工作

0 投票
3 回答
994 浏览

javascript - 什么会引发 DOMErrors

介绍

DOMError是由 DOM 定义的接口。

我想检查浏览器是否支持它。一个天真的检查是

window.DOMError !== undefined

更好的检查是使用引发 DOMError 的操作并检查

err instanceof DOMError === true

问题

哪些操作会引发 DOMErrors?

0 投票
2 回答
1895 浏览

javascript - 如何模拟 Event.timeStamp

Event.timeStamp

timeStamp 属性必须返回它被初始化的值。创建事件时,必须将属性初始化为自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数。

可以捕获两者new Eventdocument.createEvent相应地设置时间戳,但是如何拦截浏览器创建和调度的事件?

可以将一个事件侦听器(捕获阶段)添加到document侦听“每个”事件类型的事件侦听器中,并将 timeStamp 编写为接近调度时间,但这将是一个丑陋的 hack。

  • 有没有更好的模仿方式Event.timeStamp
  • new Event拦截/new CustomEventdocument.createEvent.是否有任何潜在的陷阱?
  • 是否有其他方式以编程方式创建事件?
  • 尽早添加事件侦听器document并手动设置是否有任何潜在问题?timeStamp
0 投票
2 回答
1486 浏览

javascript - 为什么在 Firefox 中 event.timeStamp 为 0?

http://jsfiddle.net/wDddR/3/

在 Firefox 中,第一个 timeStamp 是0,而在 chrome 中,时间戳是一个合理的数字。

在 Firefox 和 chrome 中,第二个 timeStamp 是一个合理的数字。

0 投票
5 回答
2864 浏览

javascript - hasChildNodes 与 firstChild

比较上面的两段伪代码,它们都附加了divto的每个子级,fragment直到没有更多子级为止。

  1. 你什么时候喜欢hasChildNodes或者firstChild它们看起来相同。
  2. 如果 API 如此相似,那么为什么它们都存在。hasChildNodes()当我可以强制firstChildnull到时为什么存在false
0 投票
1 回答
4602 浏览

javascript - DOM4:不推荐使用的属性和方法,这是什么意思?

“警告:在 DOM Core 1、2 和 3 中,Attr 继承自 Node。在 DOM4 中不再是这种情况。为了使 Attr 的实现符合规范,正在努力将其更改为不再继承自 Node . 您不应该在 Attr 对象上使用任何 Node 属性或方法。从 Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) 开始,将要删除的那些将向控制台输出警告消息。您应该修改您的代码相应地。有关完整列表,请参阅弃用的属性和方法。”

向下滚动页面,我们可以看到 nodeName 和 NodeValue 的替换,使用 Attr.name 和 Attr.value。

https://developer.mozilla.org/en/DOM/Attr#Deprecated_properties_and_methods

对于属性或 childNodes 等其他方法,它到底意味着什么?参考资料说它已被弃用,但他们没有提供任何替代品!

它已被 Attribute 弃用,但它也适用于 Node 吗?

属性对象:http ://www.w3schools.com/jsref/dom_obj_attr.asp

编辑:nodeValue 将仅被弃用为属性(Attr),因为 Attr 将不再从 DOM 级别 4 中的节点继承:

这是一个帮助我理解的简单示例:

也许这会在访问属性/节点时避免其他人混淆:)