问题标签 [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.
javascript - 用于创建新元素的 Mutation Observer
我正在尝试在创建特定 div 时关闭功能。用最简单的术语来说,我有这样的事情:
之前,我让突变事件监听 div#bar 的创建 - 像这样:
是否有使用 Mutation Observers 的等价物?我尝试了 attrchange.js,在 DOM 元素的样式对象更改后,您可以使用 javascript 钩子触发器吗?但是该插件仅检测元素何时被修改,而不是何时创建。
javascript - 何时触发 MutationObserver 回调?
我知道 MutationObservers 回调可能会在 DOM 更改后的某个时间被调用。但问题是:这些回调的时机是什么?回调是否进入浏览器的事件队列?如果是这样,他们什么时候进入队列?
是回调:
- 在 DOM 突变发生后立即调用,
- 操作 DOM 的函数完成后立即调用,
- 调用堆栈为空时立即调用,
- 在 DOM 突变发生后立即排队,
- 操作 DOM 的函数完成后立即入队,或者
- 在其他时间?
例如,如果执行以下代码(此处定义了 setZeroTimeout):
“MutationObserver”应该在“消息事件”之前还是之后打印?或者它是实现定义的?
我在 Chromium 26 上的“消息事件”之前得到“MutationObserver”,尽管 DOM 突变是在消息发布之后。也许这表明 MutationObserver 回调没有使用事件队列。
我搜索了 HTML 规范、DOM 规范或浏览器实现文档,但没有找到与此行为相关的任何内容。
请问有关于 MutationObservers 回调时间的解释或文档吗?
javascript - 使用 polyfill 可以在多大程度上模拟 Shadow DOM?
Shadow DOM W3C 草案能否通过提供用于搜索和遍历 DOM 的自定义函数在 JavaScript 中进行 polyfill?这已经完成了吗?我发现的尝试是相当温和的垫片,并且似乎没有做出太多努力来模仿规范。
我很感激这不是一件容易的事,但肯定有人仔细考虑过吗?
callback - 有没有办法检测从哪个 MutationObserver 调用回调?
如果我有一个回调函数和两个MutationObservers用于两个不同的 dom 节点,有没有办法告诉哪个观察者在调用时触发了回调?回调需要执行的工作基本相似,因此为每个观察者创建一个似乎是不可取的。
javascript - 避免在将 ID 添加到标签时触发 DOMSubtreeModified 事件
我正在使用 DOMSubtreeModified 来获取 div 中的所有 DOM 更改。
在上面的代码中,在 DOM 更改时,我正在调用 createUniqueId() 函数。
上面的代码为每个没有 id 的标签创建了一个唯一的 ID。
在分配 Id 时,会触发 DOMSubtreeModified 事件。
如何避免它在分配 ID 时触发 DOMSubtreeModified 事件?
php - 要求 Web 应用程序的最低浏览器版本
我在 PHP 中有一个 Web 应用程序,它在前端需要一些更现代的浏览器功能,例如MutationObserver。如网站所述,只有非常新的浏览器支持此功能。我需要依赖的一些 HTML5 功能也是如此。
我现在想要实现的是使用 UserAgent-String 检查服务器端用户正在运行哪个浏览器,如果它低于特定版本,将他重定向到一个信息页面,通知他应该使用较新的浏览器。
我现在一直在尝试设置适当的正则表达式来检查 UA 字符串。但是,我有点卡住了,因为浏览器制造商并不总是保持干净的架构 - 例如,对于 Opera-Browser,我需要最低版本 12。
- Opera 12.14 示例 1: Opera/9.80 (Windows NT 6.0) Presto/2.12.388 版本/12.14
- Opera 12.14 示例 2: Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14
这也可能是 Firefox 4.0。 - Opera 11.51: Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;de) Opera 11.51
这也可能是 Internet Explorer 9.0。
跟踪相同的浏览器和版本也很棘手,如 Opera 12.14 的两个示例所示:它是“Version/12.14”或“Opera 12.14”或其他一些漂亮的“随机”字符串。对于其他浏览器,问题非常相似。
所以问题是:你将如何进行?
方法 1:
useragentstring.com 有一个 API,每次用户访问欢迎页面和/或登录时我都可以查询它。我不确定这在安全性和应用程序性能方面是否是个好主意。
方法2:
PHP 的get_browser() 函数结合browscap.ini。此方法无法区分桌面浏览器和移动浏览器。
方法 3:
方法 2 的替代方案可能是phpbrowscap,您可以在其中定义自己的 browsercap.ini,而无需依赖服务器上您无权访问的某处的 browscap.ini。
还是有什么其他方法?
我很乐意发表一些评论。
javascript - javascript cloneNode 深但更改父 nodeType/nodeName
如何克隆节点然后转换该节点名称,因为我想要复制属性和子节点(https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode?redirectlocale=en-US&redirectslug=DOM %2FNode.cloneNode )
就像:我有一堆属性和孩子的跨度。我想要同样的东西,但我想要一个 div
非常感谢
在我设法克隆并更改为 div 后,我想用它替换跨度。还有一种方法可以克隆所有事件侦听器吗?
xpath - 手动创建 Xpath
//div[@id='destination-loadLevel0']/div/ul/li/div/div/span *for Asia //div[@id='destination-loadLevel0']/div/ul/li[2] /div/div/span
*对于欧洲 //div[@id='destination-loadLevel0']/div/ul/li[3]/div/div/span *对于美国
javascript - 如何知道 MutationRecord 到底发生在哪里(多个目标)?
我试图观察一组元素。元素的数量可以是不同的:从 1 到 10。
所以..
当某个元素中的值发生变化时,会收到一个 MutationRecord.type characterData。在我现在的示例中,$observedElements[1] 从 '35.00' 变为 '25.00'
但是我怎么知道这种变化是在 emelent $observedElements[1] 中发生的?在收到的 target.textContent 中,我只输入文本值。
javascript - 如果我将包含 dom4 polyfill,ReactJs 应用程序会以任何方式受益吗?我需要带有 ReactJs 的 dom4 吗?
我的应用程序完全使用 ReactJs 完成,并且在 React 之外没有 DOM 操作。
如果我将包含 dom4 polyfill,ReactJs 应用程序会以任何方式受益吗?