纯CSS如何禁止用户复制网页的内容?

html-css016

纯CSS如何禁止用户复制网页的内容?,第1张

在敲打自己的个人博客时,在博客的详情页,对于不同的内容,我是想有不同的复制方式的。例如 代码块 我就想读者单击就可以复制,这样方便读者本地调试,而对于文字描述部分,希望可以不允许读者复制。作为一个坚定的能用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>