通过 Javascript 更新 X3D 内联 url 时出错

问题描述

我正在使用 x3dom 来做一些动态的 x3d 工作。

我正在加载场景并很好地操纵它们,即操纵 ElevationGrid 的大小和纹理,我完全没有问题。

我有一个“重置”按钮,基本上可以将场景恢复到认的空白场景(我已定义)。实现此重置,我正在更改按钮的 Javascript 处理程序中 Inline 节点的 url 属性

这是最初与页面一起加载的内联节点。请记住,这非常有效。

<Inline id="Base" DEF="Base" nameSpaceName="Base" mapDEFToID="true" url="/GameRoom/LoadScene/00000000-0000-0000-0000-000000000000" contentType="model/x3d+xml"></Inline>

这是点击处理程序中实际更改 url 的代码

document.getElementById("Base").setAttribute("url",'"/GameRoom/LoadScene/00000000-0000-0000-0000-000000000000"');

当场景重新加载时,我在 x3dom 调试窗口中立即出现错误

ERROR: updateField: setValueBystr() NYI for boolean

当场景重新加载时,我的脚本例程操作场景中的元素不再起作用。我的意思不再工作是我仍然可以很好地选择 DOM 元素(单步执行客户端代码并正常查看所有内容。但是对 DOM 元素所做的更改没有生效,并且脚本或 x3dom 调试中没有进一步的错误窗口。

错误表明预期的 bool 存在某种问题,我是否必须在 Inline 节点上设置其他任何内容

任何想法将不胜感激!

解决方法

对于遇到类似问题的任何人,我已经改变了我的方法。

我不会在内存中构建一个全新的内联节点,然后替换 DOM 中已有的节点。这似乎工作得很好。