ここに概念があり、始めるためのコードがいくつかあります。ページ内のテキストが選択されるたびに、そのテキストをページ上の非表示のテキストエリアに追加してから、テキストエリアを選択します。元の選択範囲をスパンにラップして、選択して表示させます。この方法では、選択の外観があり、隠れたテキストエリアが実際に選択されているため、ユーザーが「ctrl + c」を押すと、テキストエリアからテキストがコピーされます。
あなたが探しているすべての機能を取得するには、あなたはおそらくこれを拡張したいと思います。 「ctrl + a」のキーをスニッフィングします(すべて選択します)。私はあなたが右クリックの動作を上書きすることはできないと思います...少なくとも簡単ではないし、エレガントではありません。しかし、これは少なくともあなたが走るための概念の証明です。
window.onload = init;
function init()
{
document.getElementById("hidden").value = "";
document.body.ondblclick = interceptSelection;
document.body.onmouseup = interceptSelection;
}
function interceptSelection(e)
{
e = e || window.event;
var target = e.target || e.srcElement;
var hidden = document.getElementById("hidden");
if (target == hidden) return;
var range, text;
if (window.getSelection)
{
var sel = getSelection();
if (sel.rangeCount == 0) return;
range = getSelection().getRangeAt(0);
}
else if (document.selection && document.selection.createRange)
{
range = document.selection.createRange();
}
text = "text" in range ? range.text : range.toString();
if (text)
{
if (range.surroundContents)
{
var span = document.createElement("span");
span.className = "selection";
range.surroundContents(span);
}
else if (range.pasteHTML)
{
range.pasteHTML("<span class=\"selection\">" + text + "</span>")
}
hidden.value += text;
}
hidden.select();
}
ここで私はテキストエリアとスタイルを隠すために私のテストで使用したCSSは、選択したテキストです:
#hidden
{
position: fixed;
top: -100%;
}
.selection
{
background-color: Highlight;
color: HighlightText;
}
問題は、私はできないので、私は現在のドキュメントの選択に頼ることができないということです一度に2つ以上のdivを選択してください(リンクが必要な理由を確認する必要があります)。 – JCOC611
質問とリンクされた質問から、2つの要件があるように思えます。 1.ユーザが複数のテキストを「選択」できるようにする。つまり、通常はテキストが選択されているので、テキストが強調表示されます。 2. ctrl + cを押して、ユーザーがそのテキストをコピーできるようにします。私は要件を正しく持っていますか?私は私のウェブサイトに上記のコードを掲載していますので、あなたはライブデモを見ることができます:http://jumpingfishes.com/multiselect.htm – gilly3
しかし、第三の要件があります:編集可能な複数のdivがあります( '
')、リンクされた質問が示唆するように、ユーザは複数のものを選択できなければなりません。 – JCOC611