作者:小色米虫_524 | 2023-08-28 19:40
我有以下dojo代码在div下创建表面图形元素:
....
....
....
drawRec()
将第一次绘制矩形图形.如果我在锚点href中再次调用此函数,如下所示:
...
它会再次绘制另一个图形.我需要清理div下的所有图形,然后再次创建.如何添加一些dojo代码呢?
1> Maurice Perr..:
while (node.hasChildNodes()) {
node.removeChild(node.lastChild);
}
只是迂腐 - 删除没有相应JS对象的DOM节点会导致内存泄漏.
@Tom:dojox.gfx创建JavaScript对象以与底层图形系统进行通信,这些图形系统可能具有DOM节点(SVG,VML)或不具有DOM节点(Silverlight,Flash,Canvas).从DOM中删除DOM节点不会删除这些JavaScript对象,并且**也不会删除**DOM节点,因为JavaScript对象仍然具有对这些DOM节点的引用.我在这个问题的答案中描述了处理这种情况的正确方法.
@robocat它与IE无关:JS对象引用DOM对象将它们保存在内存中,底层JS对象通过其他JS对象的引用保存在内存中.例如:gfx表面引用其所有子项,组也引用其所有子项,依此类推.仅删除DOM节点是不够的.
@ david-chu-ca - 可能是Eugene(dojo GFX库的主要作者)的后期答案应该被标记为已接受的答案.尤金 - 谢谢你的澄清.
@Eugene:你能谈谈更多吗?
2> Chetan Sastr..:
node.innerHTML = "";
非标准,但速度快,支持良好.
与删除节点相比,*更慢*:http://jsperf.com/innerhtml-vs-removechild/15
似乎是HTML 5中的标准.上面的博客条目是用户错误.https://developer.mozilla.org/en-US/docs/DOM/element.innerHTML
IE不支持.检查:http://www.theogray.com/blog/2009/06/internet-explorer-unknown-runtime-error
3> Eugene Lazut..:
首先,你需要创建一个表面并将其保存在方便的地方.例:
var surface = dojox.gfx.createSurface(domNode, widthInPx, heightInPx);
domNode
通常是一个简单的,用作表面的占位符.
您可以一次性清除曲面上的所有内容(所有现有的形状对象都将失效,之后不要使用它们):
surface.clear();
所有与表面相关的函数和方法都可以在dojox.gfx.Surface的官方文档中找到.使用的例子可以在dojox/gfx/tests/
.
4> James..:
while(node.firstChild) {
node.removeChild(node.firstChild);
}
5> Brian C..:
在Dojo 1.7或更高版本中,使用domConstruct.empty(String|DomNode)
:
require(["dojo/dom-construct"], function(domConstruct){
// Empty node's children byId:
domConstruct.empty("someId");
});
在较旧的Dojo中,使用dojo.empty(String|DomNode)
(在Dojo 1.8中弃用):
dojo.empty( id or DOM node );
这些empty
方法中的每一个都安全地删除节点的所有子节点.
推荐阅读
-
如何解决《使用Web应用程序中的RxJavaObservables无法解决性能提升的不可解决性》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《如何以编程方式构建AngleSharpCSS(或HTML)DOM》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《VisualStudio(Git提供程序)在所有文件上永久显示"挂起编辑"》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Djangorest框架代表flatten嵌套对象》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《对于CGFloat,Swift相当于ceilf》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何在AWSLambda中访问标头?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何从docker容器运行Karma测试?》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《更改为最新的Multidex后无法解析导入android.support.multidex.MultiDex》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《ReactNative-用于静态图像的Openplaay的多平台等价物》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《startMonitoringSignificantLocationChanges在swift中不起作用》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《从无线电输入中删除边框圆圈》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Android6上的扩展文件》经验,为你挑选了0个好方法。 ...
[详细]
-
如何解决《TaskCancellationException如何避免成功控制流程中的异常?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《在BASH中用转换字符串。在浮动》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《如何解决不一致的系统?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《删除ElasticSearch2.x中所有类型的文档》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《属性文件中保存的值有长度限制吗?》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Cloudformation模板格式错误:每个DeletionPolicy成员必须是一个字符串》经验,为你挑选了1个好方法。 ...
[详细]
-
如何解决《Gradle:classpath和编译依赖项有什么区别?》经验,为你挑选了3个好方法。 ...
[详细]
-
如何解决《jQuery中的.load()和奇怪的行为》经验,为你挑选了0个好方法。 ...
[详细]