禁止highlight (JavaScript & CSS3)

Section 1: This post teach you how to use JavaScript to disable highlight text on a webpage, hence avoid stealing of content by copying. [Permalink]

Section 2: This post teach you how to use CSS3 to disable highlight text on a webpage, hence avoid stealing of content by copying. [Permalink]

为了让这篇教程更整齐,我重新编辑过了 *wink 总之就是教如何禁止 highlight,最起码可以避免文章被直接 copy & paste 的方法。


第一课:用 JavaScript 禁止 highlight。最基本的方法是用 onSelectStart,在大部分支援 JavaScript 的浏览器有效。

将以下代码放在 </head> 之前:<script language="JavaScript">
// Disable highlighting only
document.onSelectStart=new Function("event.returnValue=false;");
</script>

就 JavaScript 我并非在行,但还是可以大致解释以上代码。 event.returnValue=false 的意思是用作禁止某个动作的默认效果的。——这么说吧,原本用户选择文字时,得到的效果应当是 highlight 文字;但这个默认效果被禁止了,自然就没法highlight 文字了。

浏览器如 Firefox, Opera 并不支援 onSelectStart,因此该用接下来的 CSS3 来个双管齐下。


第二课:用 CSS3 禁止 highlight。当然只在支援 CSS3 的浏览器适用。

使用 CSS3 中的 user-select,对所要生效的部分使用。

要在网页全面禁止 highlight,编辑网页的 CSS 部分 (<style> 标签;Blogger 用户则要进入 Edit HTML 页)

在 body { 之後加入以下代碼:
-moz-user-select: none; /* For Gecko (Mozilla Firefox) */
-webkit-user-select: none; /* For WebKit (Google Chrome, Safari) */
-o-user-select: none; /* For Presto (Opera) */
user-select: none;

以上已经包括几个常用的排版引擎,所以在这些著名浏览器上(需支援 CSS3 的版本)都可以成功地禁止 highlight

9 則留言

凡走過必留下痕跡,您的一個留言就是很大的鼓勵!

(: 沒有 Blogger 帳號的讀者,請選擇『名稱/網址』留下您的大名! :)

  1. 嗯 看不太懂 来support一下 哈哈哈

    回覆刪除
  2. 很棒!你有那个天份,好不好!很清楚跟随的教程。

    回覆刪除
  3. TcPinG:
    我已经重新编辑过了,应该比较容易明白了……吧?

    Cocoeriley:
    你的“美女”称号被去掉了,哈哈 XD

    回覆刪除
  4. Cocoeriley:
    那些代码还是一样的~

    回覆刪除
  5. 想问一下,你的“read more”是manually “insert jump break”的吗?我曾经有试过一种教程是直接缩短post,类似read more,但整个post的页面缩得小而不美观。

    还有预祝你成功入围和拿奖哦!

    回覆刪除
  6. 想问你,那个《第五届大马部落中文部落格祭》,那些post在submit之前还可以edit的吗?谢谢你!

    回覆刪除
  7. Cocoeriley
    对,所以很自由地要在哪儿加 read more 都可以~

    在提交之前稍作编辑,是没人知道的…如果不放心要确认的话就直接去问主办当局吧~ :)

    回覆刪除
  8. 想问,如果我之前是没有放“read more",现在加上去的话,以前的帖子也不会有read more的呈现方式,对吧?

    回覆刪除

Copyright © 2007- Zed Woolf, licensed under CC BY-NC-ND 4.0.