Javascript HTML选择API-添加<;ul>;元素范围
我们有以下HTML文档:Javascript HTML选择API-添加<;ul>;元素范围,javascript,html,dom,selection-api,Javascript,Html,Dom,Selection Api,我们有以下HTML文档: <html> <head></head> <body> <p id="par1">Paragraph1</p> <ul id="list1"> <li>Item1.1</li> <li>Item1.2</li> </ul> <p id="par2">
<html>
<head></head>
<body>
<p id="par1">Paragraph1</p>
<ul id="list1">
<li>Item1.1</li>
<li>Item1.2</li>
</ul>
<p id="par2">Paragraph2</p>
<ul id="list2">
<li>Item2.1</li>
<li>Item2.2</li>
</ul>
<p id="par3">Paragraph3</p>
<script>
let list1 = document.getElementById('list1');
let list2 = document.getElementById('list2');
let range = document.createRange();
range.setStartBefore(list1);
range.setEndAfter(list2);
document.getSelection().addRange(range);
console.log(document.getSelection());
</script>
</body>
</html>
第1段
- 项目1.1
- 项目1.2
第2段
- 项目2.1
- 项目2.2
第3段
让list1=document.getElementById('list1');
让list2=document.getElementById('list2');
让range=document.createRange();
范围.setStartBefore(列表1);
range.setEndAfter(列表2);
document.getSelection().addRange(范围);
console.log(document.getSelection());
也可作为
基本上,我们正在尝试创建一个选择范围,该范围从ul#list1之前开始,到ul#list2之后结束,两个列表都完全包含在其中。使用此选择,我们将希望在另一个拖放区域中拖动此选择
从视觉上看,这似乎是正确的。但是,查看记录的文档选择,我们看到anchorNode是ul#list1的第一个li,focusNode是p#par3。这意味着在设置拖动内容时,不包括ul#list1,而错误地包括p#par3
有没有一种方法可以使用选择API来实现我们想要的功能?选择API没有指定“正确”的行为,这意味着不同浏览器的行为会有所不同。例如,在Firefox中,您的选择将或多或少符合您的期望,但WebKit和Blink将使其正常化(将两个点移动到他们认为合适的位置)。好消息是浏览器也不会尝试将无效片段放到您的放置区域。问题是他们扔下的东西是否符合你的要求。你试过了吗?您得到了什么?选择API没有指定“正确”的行为,这意味着不同浏览器的行为会有所不同。例如,在Firefox中,您的选择将或多或少符合您的期望,但WebKit和Blink将使其正常化(将两个点移动到他们认为合适的位置)。好消息是浏览器也不会尝试将无效片段放到您的放置区域。问题是他们扔下的东西是否符合你的要求。你试过了吗?你得到了什么?