gpt4 book ai didi

javascript - XML3D、document.createElementNS 和 Meteor

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:00 24 4
gpt4 key购买 nike

我将此问题发布到 Meteor-Talk Google 群组,但我认为这是一个晦涩的问题,需要信号增强。

我正在尝试创建一个插件,让您可以将 XML 样式元素添加到 HTML 文档中,就像 HTML5 一样,与 XML3D 一起使用。 。我认为使用 Blaze 模板和 XML3D 响应式渲染 3D 内容真的很棒。

我需要使用 document.createElementNS 方法将元素添加到 DOM,以便将它们添加到 SVG 之外的替代命名空间下,以便试验替代规范。

不幸的是,Meteor 仅支持 SVG 命名空间的该方法,如以下代码所示: https://github.com/meteor/meteor/blob/a81fbf483efa4f40ea2d382f0c7275d408536e96/packages/blaze/materializer.js#L41

我考虑了两种不同的方法来做到这一点。我可以创建一个模板 block 助手,如下所示:

空格键:

{{#xml ns="http://www.xml3d.org/2009/xml3d"}}
<xml3d>...</xml3d>

Jade :

+xml(ns='http://www.xml3d.org/2009/xml3d')
xml3d ...

那部分很简单,但我如何使用正确的命名空间, react 性地向 Blaze 以及最终的 DOM 传递渲染的内容?

或者,我可以尝试以某种方式扩展 Blaze 以支持替代 namespace ,也许可以使用包。我也不知道如何准确地做到这一点,因为我不认为包可以扩展 Blaze。我确实看到了 BlazeTools,也许这会有所帮助?关于它所做的事情的文档相当稀疏,并且代码实际做了什么并不是立即显而易见的。

或者可能是这两种方法的某种组合,例如,使用 block 助手向 Blaze 发送 XML 命名空间信号,以呈现 block 助手的内容。

想法?

最佳答案

所以,我并不完全肯定这是 Meteor 的问题。

一旦我运行 XML3D 初始化代码,Meteor 似乎就能足够有效地添加我的元素。一旦 XML3D 正确初始化,我就可以做很多事情,包括使用响应式(Reactive)模板。

我必须在我的路由 Controller 中将这段代码一起破解,但是......

Template.{insert-your-template-name-here}.rendered = ->
window.initXML3DElement $('xml3d')[0]
setTimeout ->
$('canvas').attr
width: 600
height: 600
$('canvas').parent().css
display: 'block'
, 1000

我希望这对将来遇到这个问题的人有所帮助。欢迎其他评论和支持,但我对目前所拥有的感到非常满意。

我将很快编写一个有助于解决此问题的包,并将其上传到 Atmosphere。

关于javascript - XML3D、document.createElementNS 和 Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com