我知道挫败世界上最先进的思想是不可能的,但我想在我的网站上放置一些障碍,让学生不要复制文本,并将该文本作为答案发布。 (如果他们手动输入,那没关系。)
由于跨浏览器的不一致,我非常害怕JavaScript。
鉴于我已经加载了jQuery并且尽可能使用jQuery,我该怎么做:
答案 0 :(得分:10)
创建一个能够做到这一点的功能是多么令人生畏,你应该定位的是,清除剪贴板,即使用户按下Ctrl + C,没有任何东西被复制到剪贴板,这样的简单函数应该做诀窍:
<script language="javascript">
function clearData(){
window.clipboardData.setData('text','')
}
function cldata(){
if(clipboardData){
clipboardData.clearData();
}
}
setInterval("cldata();", 1000);
</script>
<body ondragstart="return false;" onselectstart="return false;" oncontextmenu="return false;" onload="clearData();" onblur="clearData();">
虽然这仍然可以被击败....
答案 1 :(得分:4)
只需在关闭之前添加以下代码&lt; / HEAD&gt; 您网页的标记:
<script type="text/JavaScript">
function killCopy(e){
return false
}
function reEnable(){
return true
}
document.onselectstart=new Function ("return false")
if (window.sidebar){
document.onmousedown=killCopy
document.onclick=reEnable
}
</script>
答案 2 :(得分:3)
如果您的文本特定于div,则可以在这些div之上放置透明div。其次,你可以使所有受保护的文本动态化,并将其注入到javascript中的div中,这将以编码形式存在 - 这将击败'view-source'。
答案 3 :(得分:3)
<script type="text/javascript" language="javascript">
$(function() {
$(this).bind("contextmenu", function(e) {
e.preventDefault();
});
});
</script>
<script type="text/JavaScript">
function killCopy(e){ return false }
function reEnable(){ return true }
document.onselectstart=new Function ("return false");
if (window.sidebar)
{ document.onmousedown=killCopy;
document.onclick=reEnable; }
</script>
//通过使用上面的代码,您可以禁用右键单击以及没有人可以复制您的页面内容
答案 4 :(得分:2)
我建议您使用:
<div oncopy="return false;">Here you have protected text</div>
可在此处找到对此方法的支持:http://help.dottoro.com/ljwexqxl.php
这很简单,在我看来足以对付普通用户。说实话,没有办法完全阻止复制文本。人们可以随时使用Chrome开发者工具,并从那里复制动态加载的文本。
要获得更有效的保护,您应将oncopy
放在<body>
代码中,否则可以通过从外部<div>
开始选择来复制文字。
答案 5 :(得分:1)
要实现这一点,您需要阻止鼠标点击和上下文菜单,点击您的网页。
以下是示例代码:
<script language="JavaScript1.2">
var msgpopup="COPYING CONTENT IS PROHIBITED";
function handle(){
if(toShowMessage== "1") alert(message);
if(closeSelf== "1") self.close();
return false;
}
function mouseDown() {
if (event.button == "2" || event.button == "3"){handle();}
}
function mouseUp(e) {
//if (document.layers || (document.getElementById && !document.all)){
if (e.which == "2" || e.which == "3"){ handle();}
//}
}
document.onmousedown=mouseDown;
document.onmouseup=mouseUp;
document.oncontextmenu=new Function("alert(msgpopup);return false")
</script>
答案 6 :(得分:1)
一个简单有效的解决方案 - 绑定到'copy'事件并阻止它。您还可以设置要复制的文本(稍后由用户粘贴)。
document.addEventListener('copy', function (e){
e.preventDefault();
e.clipboardData.setData("text/plain", "Do not copy this site's content!");
})
答案 7 :(得分:1)
使用jQuery可以轻松地在网页上禁用选择文本,复制,右键单击。下面是简单的jQuery代码片段,可以轻松完成此任务:
<script type="text/javascript">
// Disable right click on web page
$("html").on("contextmenu",function(e){
return false;
});
// Disable cut, copy and paste on web page
$('html').bind('cut copy paste', function (e) {
e.preventDefault();
});
</script>