我正在尝试两种选择:
这是我的代码:
function noMenu() {
return false;
}
function disableCopyPaste(elm) {
// Disable cut/copy/paste key events
elm.onkeydown = interceptKeys
// Disable right click events
elm.oncontextmenu = function() {
return false
}
}
function interceptKeys(evt) {
evt = evt||window.event // IE support
var c = evt.keyCode
var ctrlDown = evt.ctrlKey||evt.metaKey // Mac support
// Check for Alt+Gr (http://en.wikipedia.org/wiki/AltGr_key)
if (ctrlDown && evt.altKey) return true
// Check for ctrl+c, v and x
else if (ctrlDown && c==67) return false // c
else if (ctrlDown && c==86) return false // v
else if (ctrlDown && c==88) return false // x
// Otherwise allow
return true
}
这是我的HTML:
<body class="node88" oncontextmenu="return noMenu();" onkeydown="return disableCopyPaste();">
noMenu()
功能正常,但disableCopyPaste()
不起作用。
答案 0 :(得分:17)
你不能。
你可以尝试阻止一些向量(比如黑客攻击右键更难,拦截 ctrl + c ,这使得选择文本变得困难)......但是他们只会做一些工作,而且无法阻止所有向量(编辑 - &gt;复制?查看源?wget
等等......)。
如果您试图保护您的内容免受技术较少的用户的影响,这些方法可能没问题......但正如这里的评论所暗示的那样,它们会让更多技术用户感到沮丧。
如果您的敏感内容必须受到保护,您可能需要考虑将其嵌入Flash blob或DRM的PDF中。这些仍然可以进行逆向工程,但需要一个稍微聪明的攻击者。
答案 1 :(得分:10)
您可以禁用页面上的文本选择,而不是尝试控制用户键命令(某些浏览器可能将其检测为恶意代码)。虽然这不会避免像您的评论中所述那样复制数据。
<!-- Disable Copy and Paste-->
<script language='JavaScript1.2'>
function disableselect(e) {
return false
}
function reEnable() {
return true
}
document.onselectstart = new Function ("return false")
if (window.sidebar) {
document.onmousedown = disableselect
document.onClick = reEnable
}
</script>
将其放在您的
中 <head> </head>
标签,用户无法在页面上选择文字。
在http://myblog-log.blogspot.com/2007/06/disable-copy-and-paste.html
上找到答案 2 :(得分:6)
<强>使用Javascript:强>
//disable mouse drag select start
document.onselectstart = new Function('return false');
function dMDown(e) { return false; }
function dOClick() { return true; }
document.onmousedown = dMDown;
document.onclick = dOClick;
$("#document").attr("unselectable", "on");
//disable mouse drag select end
//disable right click - context menu
document.oncontextmenu = new Function("return false");
//disable CTRL+A/CTRL+C through key board start
//use this function
function disableSelectCopy(e) {
// current pressed key
var pressedKey = String.fromCharCode(e.keyCode).toLowerCase();
if (e.ctrlKey && (pressedKey == "c" || pressedKey == "x" || pressedKey == "v" || pressedKey == "a")) {
return false;
}
}
document.onkeydown = disableSelectCopy;
//or use this function
$(function () {
$(document).keydown(function (objEvent) {
if (objEvent.ctrlKey || objEvent.metaKey) {
if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {
return false;
}
//}
}
});
});
<强> CSS:强>
//disable selection through CSS for different browsers
#document, #ctl00_MasterPageBodyTag{
user-select: none;
-ms-user-select: none;
-o-user-select:none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-webkit-touch-callout: none;
}
//where #document is the div for which select needs to be disabled and #ctl00_MasterPageBodyTag is the id of the body tag.
答案 3 :(得分:3)
为什么不尝试让文字无法选择?
.unselectable {
-webkit-user-select: none; /* Chrome all / Safari all */
-moz-user-select: none; /* Firefox all */
-ms-user-select: none; /* IE 10+ */
user-select: none; /* Likely future */
}
/*Mobile*/
-webkit-touch-callout: default /* displays the callout */
-webkit-touch-callout: none /* disables the callout */
我也很快就会编辑这个答案。我正在看同样的问题。但我找到了一些关于如何过度写的信息。我正在编写一个JS函数,当用户复制剪贴板时会被覆盖。无论如何,完成后会发布。还在试验它。你可以阅读我在css技巧上找到的文章。
答案 4 :(得分:2)
您可以控制放入剪贴板的文本:
document.addEventListener('copy', function(e) {
e.clipboardData.setData('text/plain', 'Please do not copy text');
e.clipboardData.setData('text/html', '<b>Please do not copy text</b>');
e.preventDefault();
});
答案 5 :(得分:2)
您可以在页面中禁用“上下文菜单”、“复制”、“剪切”和“粘贴”:
<script type="text/javascript">
document.oncontextmenu = new Function('return false')
document.body.oncut = new Function('return false');
document.body.oncopy = new Function('return false');
document.body.onpaste = new Function('return false');
</script>
答案 6 :(得分:0)
您可以使用CSS不允许任何文本选择,因此不会有任何文本复制的可能性。
将以下CSS和JS添加到正文中:
CSS:
<style>
.unselectable
{
-moz-user-select:none;
-webkit-user-select:none;
cursor: default;
}
html
{
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
</style>
JS:
<script id="wpcp_css_disable_selection" type="text/javascript">
var e = document.getElementsByTagName('body')[0];
if(e)
{
e.setAttribute('unselectable',on);
}
</script>
答案 7 :(得分:0)
网站真实副本保护
在将此声明为垃圾内容或广告之前,请访问示例页以获取证据。尝试从示例页面复制内容。
欲了解更多详情和购买信息,请发送电子邮件至websecurecontent@protonmail.com
优势
支持所有语言(英语,印地语,泰米尔语,马拉雅拉姆语等) 支持所有CMS,包括Wordpress,Drupal,Joomla等 无法从页面源复制内容。 使用开发人员工具无法复制内容。 在任何浏览器上都无法使用任何加载项/扩展来复制内容。 禁用javascript无法复制内容。
答案 8 :(得分:0)
if file_match in files:
# do something
elif file_trade_match in files:
# do something else
else:
# log error
这可在Chrome,Firefox,Safari,IE11和Edge中使用。为了进行测试,我正在使用$('some.selector').bind('cut copy paste', function (e) {
e.preventDefault();
});
。来源文章:
https://www.codexworld.com/disable-mouse-right-click-cut-copy-paste-using-jquery
答案 9 :(得分:0)
如果您正在寻找简单的HTML以禁用特定元素上的COPY和PASTE,请使用以下代码。您甚至可以通过将其放在body标签上来阻止整个页面。
<div oncontextmenu="return false" onkeydown="if ((arguments[0] || window.event).ctrlKey) return false"></div>
oncontextmenu =“返回假” onkeydown =“ if(((arguments [0] || window.event).ctrlKey)返回false“
答案 10 :(得分:0)
如果您不想阻止突出显示或只允许用户复制有限数量的字符:
function anticopy(event: ClipboardEvent) {
// @ts-ignore
const clipboardData = event.originalEvent.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
const txt = window.getSelection().toString() || editor.getWin().getSelection().toString();
if (txt.length > 200) {
const no = 'You cannot copy more than 200 characters.';
clipboardData.setData('text', no);
clipboardData.setData('text/html', `<p>${no}</p>`);
} else {
const html = `<p><span data-user="${user.data.id}"></span> ${txt}</p>`;
clipboardData.setData('text', txt);
clipboardData.setData('text/html', html);
}
event.preventDefault();
}