Javascript google chrome和chrome中不支持不连续选择错误

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

我正在开发一个书签应用程序,在那里我必须存储用户选择的关键字、单词或内容。我使用createRange()和addRange()javascript方法创建范围,然后由用户查找所选元素/内容。我为此编写的代码如下

<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提供的代码,但我将告诉您我是如何在自己的代码中修复它的

复制:

  • 将页面上的其他文本复制到cl
    window.getSelection().removeAllRanges();