如何避免完全粘贴?
How to avoid paste completely?
我尝试了以下方法,但我可以继续粘贴到检查器上吗?
使用 ckEditor 5
的经典版本
$(document).ready(function () {
var ambit = $(document);
// Disable Cut + Copy + Paste (input)
ambit.on('copy paste cut', function (e) {
e.preventDefault(); //disable cut,copy,paste
return false;
});
// Disable Cut + Copy + Paste and Browser Admin Tools (all document)
ambit.keydown(function (e) {
var forbiddenCtrlKeys = new Array('c', 'x', 'v', 'ins', 'u');
var forbiddenShiftKeys = new Array('del', 'ins', 'f2', 'f4', 'f7');
var forbiddenCtrlShiftKeys = new Array('k', 'i', 'm', 's', 'j');
var keyCode = (e.keyCode) ? e.keyCode : e.which;
var isCtrl, isShift;
isCtrl = e.ctrlKey;
isShift = e.ctrlShift;
string = getKeyCodeString(keyCode);
if (string == 'f12')
{
e.preventDefault();
return false;
}
if (isCtrl && !isShift) {
for (i = 0; i < forbiddenCtrlKeys.length; i++) {
if (forbiddenCtrlKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
if (!isCtrl && isShift) {
for (i = 0; i < forbiddenShiftKeys.length; i++) {
if (forbiddenShiftKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
if (isCtrl && isShift) {
for (i = 0; i < forbiddenCtrlShiftKeys.length; i++) {
if (forbiddenCtrlShiftKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
return true;
});
var getKeyCodeString = function(keyCode)
{
var string;
switch (keyCode) {
case 45:
string = 'ins'; break;
case 46:
string = 'del'; break;
case 113:
string = 'f2'; break;
case 115:
string = 'f4'; break;
case 118:
string = 'f7'; break;
case 123:
string = 'f12'; break;
default:
string = String.fromCharCode(keyCode);
break;
}
return string.toLowerCase();
}
function ignorePaste() {
$("[data-ignorepaste]").on("cut copy paste", function (e) {
e.preventDefault(); //prevent the default behaviour
});
};
$(".ck-editor__editable").attr("data-ignorepaste");
ignorePaste();
});
您应该 preventDefault
在 paste
事件本身、window
级别或 <textarea>
的父级别(如果您不想)
全局禁用 paste
。
确保将 true
作为 addEventListener
的第 3 个参数,以便事件在 捕获阶段 停止。
window.addEventListener('paste', e => {
e.preventDefault()
e.stopPropagation()
}, true)
<h4> Paste disabled: </h4>
<textarea id="textarea"></textarea>
我尝试了以下方法,但我可以继续粘贴到检查器上吗?
使用 ckEditor 5
的经典版本$(document).ready(function () {
var ambit = $(document);
// Disable Cut + Copy + Paste (input)
ambit.on('copy paste cut', function (e) {
e.preventDefault(); //disable cut,copy,paste
return false;
});
// Disable Cut + Copy + Paste and Browser Admin Tools (all document)
ambit.keydown(function (e) {
var forbiddenCtrlKeys = new Array('c', 'x', 'v', 'ins', 'u');
var forbiddenShiftKeys = new Array('del', 'ins', 'f2', 'f4', 'f7');
var forbiddenCtrlShiftKeys = new Array('k', 'i', 'm', 's', 'j');
var keyCode = (e.keyCode) ? e.keyCode : e.which;
var isCtrl, isShift;
isCtrl = e.ctrlKey;
isShift = e.ctrlShift;
string = getKeyCodeString(keyCode);
if (string == 'f12')
{
e.preventDefault();
return false;
}
if (isCtrl && !isShift) {
for (i = 0; i < forbiddenCtrlKeys.length; i++) {
if (forbiddenCtrlKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
if (!isCtrl && isShift) {
for (i = 0; i < forbiddenShiftKeys.length; i++) {
if (forbiddenShiftKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
if (isCtrl && isShift) {
for (i = 0; i < forbiddenCtrlShiftKeys.length; i++) {
if (forbiddenCtrlShiftKeys[i] == string) {
e.preventDefault();
return false;
}
}
}
return true;
});
var getKeyCodeString = function(keyCode)
{
var string;
switch (keyCode) {
case 45:
string = 'ins'; break;
case 46:
string = 'del'; break;
case 113:
string = 'f2'; break;
case 115:
string = 'f4'; break;
case 118:
string = 'f7'; break;
case 123:
string = 'f12'; break;
default:
string = String.fromCharCode(keyCode);
break;
}
return string.toLowerCase();
}
function ignorePaste() {
$("[data-ignorepaste]").on("cut copy paste", function (e) {
e.preventDefault(); //prevent the default behaviour
});
};
$(".ck-editor__editable").attr("data-ignorepaste");
ignorePaste();
});
您应该 preventDefault
在 paste
事件本身、window
级别或 <textarea>
的父级别(如果您不想)
全局禁用 paste
。
确保将 true
作为 addEventListener
的第 3 个参数,以便事件在 捕获阶段 停止。
window.addEventListener('paste', e => {
e.preventDefault()
e.stopPropagation()
}, true)
<h4> Paste disabled: </h4>
<textarea id="textarea"></textarea>