0

ページに複数のdivがあります。選択したテキストをdiv1からdiv2にのみコピーしたいのですが、div2、div3、div4の選択はコピーされません。Ctrl + Aキーが押されているか、一度に複数のdivが選択されている場合、コピーは実行されません。

//Validation for including text only from specified div

$('#DocumentText').mouseup(function (e) {
    debugger;
    isSelected = true;
    flaginclude = 1;

    // e.stopPropagation();
});

$(document).mouseup(function (e) {
    debugger;

    if (flaginclude != 1) {
        e.stopImmediatePropagation();
        isSelected = false;
    }
    flaginclude = 0;
});

myfunction()
{
 if(isSelected)
 {
   //logic to append selected text on div2
 }
}
4

3 に答える 3

2

これを確実にする信頼できる方法はありません。ただし、を使用している最新のブラウザでは、選択を防ぐことができますno-select

#div1, #div2 {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

[ソース]

于 2012-09-18T12:56:36.897 に答える
0

独自のキーボードリスナーを提供して、キーボードショートカットのコピー/貼り付けをブロックし、右マウスボタンをブロックして、ユーザーがコンテキストメニューを使用できないようにすることができますが、これはUEの観点からは非常に厄介です。

確認するコードが目の前にありませんが、代わりにDiv2で「onchange」(または同様の)イベントをリッスンし、起動するたびにコンテンツを検査します(そして、それらがDiv1のコンテンツと一致するかどうかを確認します)。 。非表示の要素を履歴バッファーとして使用すると、Div1以外のコンテンツをロールバックできます(新しいコンテンツを識別できます)。

于 2012-09-18T13:10:51.133 に答える
0

イベント後の選択を変更して、特定の要素のみに制限することができます。特定の要素内でテキストだけを選択する方法の例を次に示します。

https://stackoverflow.com/a/5801903/96100

これは、私のRangyライブラリを使用して選択を制限する関数の例です。

ライブデモ: http: //jsfiddle.net/nm3FM/

コード:

function limitSelectionToElement(el) {
    var selectedRange = null;
    var sel = rangy.getSelection();
    var elRange = rangy.createRange();
    elRange.selectNodeContents(el);
    if (sel.rangeCount) {
        selectedRange = sel.getRangeAt(0).intersection(elRange);
    }
    elRange.detach();
    sel.setSingleRange(selectedRange);
}
于 2012-09-18T13:22:23.820 に答える