在敲打自己的个人博客时,在博客的详情页,对于不同的内容,我是想有不同的复制方式的。例如 代码块 我就想读者单击就可以复制,这样方便读者本地调试,而对于文字描述部分,希望可以不允许读者复制。作为一个坚定的能用CSS绝不上JS的极端份子,我最终找到了CSS3中的user-select。
用来控制用户是否可以选中文本。全选,部分选中。
在很多时候用户希望的可能是一次性复制完整的内容,例如一段代码,密码,一些key。
user-select:all : 让用户可以单击选中元素。
这里我们演示了三个不同的Html标签下的效果。
不过all同样存在一个令人尴尬的缺点,只要你设定了all,那你就不能选中部分内容。
对于网页中的元素,可以使用 user-select: none 禁止用户选中内容。
为啥会有这个说法吗,对于通常的网页,我们是可以选择特定的内容的。例如在下面的页面中,我们就可以部分选择内容,
但是这里的标题的部分,主要是指在对立面无法选中的元素。例如html中有这样一个标签sup,这个标签主要是用来给元素添加角标。
当你想复制这段文本的时候: 我后面有个角标1我前面有角标 ,这个角标也会被复制下来。
此时我们就需要针对角标设置,这样设置还可以保证当你p标签是user-select:all的时候,复制也会忽略角标!
CSS提供了::selection`伪元素来设置文本选择的样式
您可以通过定位 ::selection 伪元素来设置文本选择的样式。但是,只有下面的几个属性可以设置:
例如
选中后的效果如下:
网页上禁止复制主要靠JavaScript来实现。<BODY oncontextmenu="return false" onselectstart="return false"
ondragstart="return false" onbeforecopy="return false" oncopy=document.selection.empty() onselect=document.selection.empty()>
-----------------------------------------------
防止复制的js
-----------------------------------------------
<SCRIPT language=JavaScript1.2>
function disableselect(e){
return false}
function reEnable(){return true
}
file://if IE4+
document.onselectstart=new Function ("return false")
file://if NS6
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</SCRIPT>
<SCRIPT language=JavaScript type=text/JavaScript>
<!--
function MM_reloadPage(init) {//reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidthdocument.MM_pgH=innerHeightonresize=MM_reloadPage}}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload()
}
MM_reloadPage(true)
//-->
</SCRIPT>
-------------------------------------------------------
防止下载的js
-------------------------------------------------------
<noscript><iframe src=""></iframe></noscript>
--------------------------------------------------------
下面是防止右键的js:
--------------------------------------------------------
<script language="JavaScript">
<!--
if (window.Event)
document.captureEvents(Event.MOUSEUP)
function nocontextmenu() {
event.cancelBubble = true
event.returnValue = false
return false
}
function norightclick(e) {
if (window.Event){
if (e.which == 2 || e.which == 3)
return false
}else{
if (event.button == 2 || event.button == 3){
event.cancelBubble = true
event.returnValue = false
return false
}
}
}
document.oncontextmenu = nocontextmenu// for IE5+
document.onmousedown = norightclick// for all others
//-->
</script>
没有办法,要控制页面右键菜单和快捷键只能用JavaScript,css只能控制样式。而且就算用JavaScript控制了,别人查看源文件或者用一些页面分析工具还是很容易提取你的文章内容的。
解决办法:
1、不用百度空间,用其他安全性,定制性更好的博客;
2、将文章加上访问密码,只给熟悉的人看。
用其他更为专业的博客比如blogbus的话,你可以为你的文章添加授权,比如CC协议,不允许转载等等,但百度空间上面大半都是转载的文章,如果添加这样的字样反而容易引起纠纷,所以如果你原创文章较多的话赶紧换个博客吧。个人推荐的有blogbus、歪酷、优博网、fc2博客,或者可以用WordPress、zblog等流行的博客程序建个独立博客,这样管理权就完全属于自己了。