zoukankan      html  css  js  c++  java
  • oncontextmenu究竟应当放在那里?[转]

    最近工作上User提出了要在頁面上有防止右鍵選單的功能。我不是很想做這個﹐
    因為這是防君子不防小人﹐網路上一堆教人如何破解的文章﹐感覺做了就是白努力定律。
    不過User最大﹐由其前幾個月某個有力的User太閒沒事幹﹐跑去跟老大唉﹐唉說IT都不配
    合﹐IT給的系統難用...﹐間接的就這樣我受了無妄之災﹐如今上班的地點由15分鐘變成
    了50分鐘。

    好﹐上面一堆廢話不重要﹐重點是為了這個右鍵功能﹐實際做了之後﹐衍生發現一些問題
    但網路上沒有找到資料﹐就自己整理一下。

    一開始這個防右鍵的功能最簡單的寫法﹐應該就是直接在body標籤中加入oncontextmenu="return false"。
    當我這麼做之後﹐正洋洋得意這麼簡單的需求真容易應付時﹐突然發現一件事﹐當一個頁面的資料太少時﹐
    在圖中紅色框的位置竟然沒有鎖到右鍵的功能。
    使用<body oncontextmenu="return false">



    研究了許久發現問題在於DOCTYPE。我的程式是以VS 2005開發﹐VS default所帶的DOCTYPE是如下
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    若把DOCTYPE移除﹐或者改為
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    這樣就不會發生上述的事情。

    不過﹐網路上為什麼我沒遇到這樣的狀況呢?經過一陣子的嘗試﹐發現就是不要直接在body上寫這個功能﹐
    而是要寫在javascript或css之中。
    1.CSS
    寫在css之中﹐只要被引用這個css就有防右鍵的功能﹐很方便

    1 <style type="text/css">
    2   body
    {
    3     font-size
    :12px;
    4     star
    :expression(document.oncontextmenu=function(){return false;});
    5   }
    6 </style>


    用CSS Expression很方便﹐可以對CSS做很多的擴充﹐是一項很好的功能﹐可惜....不應該用這個功能。
    第一﹐這不是標準的W3C規格﹐只能用於IE
    第二﹐CSS Expression很耗資源﹐頁面的滾動﹑滑鼠的移動﹑頁面放大﹑縮小...﹐都會做頁面的更新。
    第三﹐微軟已經宣佈IE8的標準模式已經不再支援這個功能。

    2.Javascript
    使用Javascript的寫法應該算是最好的方式了﹐如下
     

    1 <script type="text/javascript">
    2     document.oncontextmenu=function(){return false;}
    3 </script>
  • 相关阅读:
    FAST for SharePoint如何重置Index
    SharePoint 2007有性能问题? 先试试这篇.
    "Cannot generate SSPI context"
    记录一个用过的SQL脚本(select * into)
    IISRESET为什么有时候要带个noforce参数?
    SharePoint跟权限有关的Object Model Class
    DotNET也谈组合强命名破解FlyGrid 1.5.0.31963 for VS2003
    应同学之邀,破解一个软件,学习逆向工程,文章如下
    win2003下建立*.*到asp.net的映射(安装CNBlogsDotText用)
    MS.Net CLR 扩展PE结构分析
  • 原文地址:https://www.cnblogs.com/thxuaimin/p/3062185.html
Copyright © 2011-2022 走看看