【发布时间】:2013-07-11 14:57:20
【问题描述】:
我有一个 dijit 树,我希望能够选择或突出显示树节点中的文本,以便可以复制/粘贴它们。 Dojo 有一些树的例子here. 所有这些都说明了我的问题。
另外,这里有一个JSFiddle 和一个dijit/tree 来演示这个问题。
如果您加载任何示例,您会注意到您无法拖动鼠标来突出显示树文本。
我尝试更改传递给 Dojo 的 HTML,但看起来它放在节点中的任何内容都无法选择,我不确定该怎么做。似乎 Dojo 有它自己的 CSS 导致了这种情况。样式看起来很模糊,所以我不确定在哪里进行更改。
是否有我必须覆盖的特定 CSS 文件?或者我还能做些什么来自己编辑树节点?
【问题讨论】:
-
我有一个部分答案,从进入 chrome devtools 并检查一些不可选择的文本,特别是它的事件侦听器。它说在 div#tree.dojoDndContainerOver.dijitTree.dijitTreeHover.dijitHover 上有一个 selectstart 侦听器,它安装在 dijit 内的 _dndContainer.js 中:github.com/dojo/dijit/blob/… Comment "// 取消文本选择和文本拖动"。如果我在 devtools 中删除它,则文本变为可选择的。不过,不知道如何阻止此处理程序或将其从程序中卸载。
-
好的,这是一个真正适合我的解决方法:
tree.dndController.events.splice(4,1)[0].remove();。换句话说,从 events 数组中删除索引 4 处的事件侦听器(您可以从上述 github 上的源代码中看到它被插入到该索引处),然后对其调用 remove() 。这使得文本可选择。现在希望专家能介入并告诉我们这样做的正确方法。 -
@DonHatch 感谢您的回复,对于迟到的回复感到抱歉。我在我链接的 JSFiddle 中尝试了你的代码。它对我不起作用。您在网上某个地方有工作示例吗?
标签: javascript css dojo dijit.tree