javascript - Select2 呈现的跨度元素不可复制到剪贴板
问题描述
我一直在尝试在 select2 小部件中获取所选值的标签(而不是值本身),并使用 clipboardjs 将其复制到剪贴板,但失败了。
要轻松重现这一点,请访问https://select2.org/getting-started/basic-usage并在 select2 示例中选择“阿拉斯加”。
通过检查元素,我可以看到包含所选值“阿拉斯加”的元素:
<span class="select2-selection__rendered" id="select2-zhjr-container" role="textbox" aria-readonly="true" title="Alaska">Alaska</span>
所以我尝试使用从clipboard.js源修改的这段代码进行选择,以模拟通过选择来选择文本值:
element = document.querySelector('#select2-zhjr-container')
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
selectedText = selection.toString();
console.log('selectedText: ' + selection)
事实证明 selectedText 是空的。
如何正确获取 selectedText 值,以便可以使用 clipboardjs 将其复制到剪贴板?
是的,我也可以使用 DOM 获取标签文本,但是它不能复制到剪贴板中。必须以编程方式选择标签文本,然后将其复制到剪贴板中。
以编程方式选择和获取所选文本是失败的。
谢谢你。
解决方案
通过使用 textContent 我能够得到它
element = document.querySelector('#select2-v8mi-container')
console.log('selectedText: ' + element.textContent)
selectedText: Alaska
推荐阅读
- angular - 如何从扩展面板跳过标签顺序?
- angular - Angular 中的 *ng for 循环内的 *ng for 循环中是否可以有多个工具功能
- amazon-web-services - 如何通过项目的属性对 dynamodb 查询结果进行排序?
- flutter - Flutter 邮件程序正在发送重复的电子邮件,同时发送两封
- r - 如何在没有for循环的情况下获得相同的结果?
- ios - 通过声音和振动推送通知
- mysql - select 语句也可以查询除列之外的行吗?
- android - 在基本(应用程序)模块中显示来自动态功能模块的片段?
- javascript - 在 React 中使用不同结构的键/值对渲染 JSON
- python - 如何根据模式删除列中每个条目的最后一部分?