我对JS/电子很陌生。我正在尝试创建一个电子应用程序,我的电子应用程序有几个图表,我正在使用LightningChart JS作为我的图表。LightningChart API要求我将一个div作为目标,然后它显然会将一个画布插入到它所使用的div中。
我的应用程序将5-10张图表放在垂直列中。我希望用户能够上上下下地将他们的订单更改为他们喜欢的顺序。我试图使用一些普通的Javascript来支持HTML5拖放API。
通过遵循本教程(https://web.dev/drag-and-drop/),我获得了基本的拖放操作,只使用div中的文本,但是,当我填充图表时,画布标记会添加额外的内联样式。
当我必须将innerHTML从一个元素转移到另一个元素时,这就成了一个问题。电子抱怨这是一个不安全的内联。我犹豫不决,是否允许不安全的内联,就像我发现的任何页面/堆叠溢出的帖子,说不要那样做,我正试图用正确的方式开发我的应用程序。
问题:我能做些什么呢?删除div,然后在移动后重新实例化图表?
是否有更好/更简单的方法允许重新排列图表,而不是使用拖放API?

下面是在LightningChart运行时注入的画布HTML。
<div id="GammaChart" style="position: relative; box-sizing: content-box; cursor: default;"><canvas width="2896" style="position: absolute; inset: 0px; width: 100%; height: 100%; box-sizing: content-box;" height="500"></canvas></div>下面是我的一个div的样子:
<div id="ContainerDiv" draggable="true" class="chartBox">
<div id="IncAzContChart"></div>
</div>发布于 2022-09-14 09:52:07
也许,在应用拖放重新定位时,可以使用其他方法来代替移动innerHTML内容的方法,例如用JavaScript更改DIV元素的顺序?
坦率地说,我不太确定这里的问题在哪里,但也许这是一个可行的解决方案。
例如,要在同一个容器中交换两个DIVs的位置,您可以这样做:
container.replaceChildren(
[...container.children].map(child =>
// Swap positions of div1 and div2
child === div1 ? div2 :
child === div2 ? div1 :
child
)
)https://stackoverflow.com/questions/73709536
复制相似问题