Javascript google chrome和chrome中不支持不连续选择错误
我正在开发一个书签应用程序,在那里我必须存储用户选择的关键字、单词或内容。我使用createRange()和addRange()javascript方法创建范围,然后由用户查找所选元素/内容。我为此编写的代码如下Javascript google chrome和chrome中不支持不连续选择错误,javascript,jquery,google-chrome,firefox,chromium,Javascript,Jquery,Google Chrome,Firefox,Chromium,我正在开发一个书签应用程序,在那里我必须存储用户选择的关键字、单词或内容。我使用createRange()和addRange()javascript方法创建范围,然后由用户查找所选元素/内容。我为此编写的代码如下 <head> <script type="text/javascript"> var storedSelections = []; function StoreSelection () { if (window.getSelec
<head>
<script type="text/javascript">
var storedSelections = [];
function StoreSelection () {
if (window.getSelection) {
var currSelection = window.getSelection ();
for (var i = 0; i < currSelection.rangeCount; i++) {
storedSelections.push (currSelection.getRangeAt (i));
}
currSelection.removeAllRanges ();
} else {
alert ("Your browser does not support this example!");
}
}
function ClearStoredSelections () {
storedSelections.splice (0, storedSelections.length);
}
function ShowStoredSelections () {
if (window.getSelection) {
var currSelection = window.getSelection ();
currSelection.removeAllRanges ();
for (var i = 0; i < storedSelections.length; i++) {
currSelection.addRange (storedSelections[i]);
}
} else {
alert ("Your browser does not support this example!");
}
}
</script>
</head>
<body>
Select some content on this page and use the buttons below.<br /> <br />
<button onclick="StoreSelection ();">Store the selection</button>
<button onclick="ClearStoredSelections ();">Clear stored selections
</button>
<button onclick="ShowStoredSelections ();">Show stored selections</button>
</body>
var storedSelections=[];
函数存储选择(){
if(window.getSelection){
var currSelection=window.getSelection();
对于(变量i=0;i
存储所选内容
清除存储的选择
显示存储的选择
这段代码在Firefox上运行良好。我能够一个接一个地选择多个内容,并能够再次显示所选内容,但在chrome和chrome上,我得到的不连续选择不受支持。
当我在范围数组中存储多个元素并单击“显示存储的选择”按钮时出错
我们将不胜感激。请告诉我是否有其他方法可以完成这个书签任务 这是我能想到的唯一可行的方法: 将所选内容包装在
…
中
但请注意:
- 显然,一旦选择了其他任何内容,就必须再次删除这些跨距,但这应该不会太困难。但是,您应该使用
而不是window.onmousedown
,因为window.onclick
是在按下任何按钮后触发的,因此当按下“显示存储的选择”按钮时,将创建一个新的选择,从而破坏应该捕获的选择onclick
- 删除或替换存储的选择开始或结束的任何元素都将使该选择无效,因此当单击“显示存储的选择”时,将不会显示任何内容
- 如果选择跨越多个图元,则需要将每个图元拆分为一个选择,否则插入范围将失败或将其他图元(如按钮)一分为二
var-storedSelections=[];
var simulatedSelections=[];
window.onmousedown=清除模拟选择;
函数storeSelection()
{
if(window.getSelection)
{
var currSelection=window.getSelection();
对于(变量i=0;i
。突出显示
{
背景:突出;
}
选择此页面上的一些内容并使用下面的按钮。
存储所选内容
清除存储的选择
显示存储的选择
仅供参考我在滚动自己的“复制到剪贴板”功能时遇到类似错误。我不打算讨论OP提供的代码,但我将告诉您我是如何在自己的代码中修复它的
复制:
window.getSelection().removeAllRanges();