Typecho 如何禁止网站内容被复制
有的时候我们不想网站的内容或者说文章的内容被复制,那么这一段代码可以帮助你去实现,不过。这并不能完全的阻止网站内容被搬走,因为稍微有点技术能力的人,或者愿意花点时间的人一样可以通过比如查看网站源码等方法来获得内容。
实现方法:
方法一、禁止网站内容被选中
<script type="text/Javascript">
<!--
document.oncontextmenu=function(e){return false;};
document.onselectstart=function(e){return false;};
//-->
</script>
<style>
body{
-moz-user-select:none;
}
</style>
<script type="text/Javascript"><!--
if (top.location != self.location)top.location=self.location;
// --></script>
<noscript><iframe src=*.html></iframe></noscript>
方法二、自动给复制内容加入声明版权信息(TYPECHO 专用)
<script>
document.body.addEventListener('copy', function (e) {
if (window.getSelection().toString() && window.getSelection().toString().length > 10) {
setClipboardText(e);
}
});
function setClipboardText(event) {
var clipboardData = event.clipboardData || window.clipboardData;
if (clipboardData) {
event.preventDefault();
var htmlData = ''
+ '著作权归作者所有。<br>'
+ '商业转载请联系作者获得授权,非商业转载请注明出处。<br>'
+ '作者:<?php $this->author() ?><br>'
+ '链接:' + window.location.href + '<br>'
+ '来源:<?php $this->options->siteUrl(); ?><br><br>'
+ window.getSelection().toString();
var textData = ''
+ '著作权归作者所有。\n'
+ '商业转载请联系作者获得授权,非商业转载请注明出处。\n'
+ '作者:<?php $this->author() ?>\n'
+ '链接:' + window.location.href + '\n'
+ '来源:<?php $this->options->siteUrl(); ?>\n\n'
+ window.getSelection().toString();
clipboardData.setData('text/html', htmlData);
clipboardData.setData('text/plain',textData);
}
}
</script>
方法三、CSS实现内容禁止选择
-moz-user-select: none; /火狐/
-webkit-user-select: none; /webkit浏览器/
-ms-user-select: none; /IE10/
-khtml-user-select: none; /早期浏览器/
user-select: none;
以上方法一和方法二的使用步骤,将代码复制到主题目录 footer.php 里,放在 </body>
标签前即可,方法三需要放在主题的样式表文件里,找到文章内容 class 把代码粘贴进去,纯小白不建议操作。
以上所有的方法都是治标不治本,而且给用户带来的体验可能也比较差,所以使用前请自己权衡利弊。那么有没有治本的方法呢?有啊!就是不要写在网上,你可以拿起你的小本本,拿起手中的笔,写在纸上这样别人就没法复制粘贴了!
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。