我的页面上有多个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
}
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
您可以提供自己的键盘监听器来尝试阻止复制/粘贴键盘快捷键,并阻止右键按钮以防止用户使用hte上下文菜单 - 但从UE的角度来看,这将是非常讨厌的。
我没有在我面前检查代码,但是你可以在Div2上监听“onchange”(或类似)事件,并且每次触发检查内容(并检查它们是否与内容匹配)来自Div1)。使用隐藏元素作为历史缓冲区将允许您回滚不是来自Div1的任何内容(以及识别新内容)
答案 2 :(得分: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);
}