65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 ASP.NET 中使用 JavaScript 保护页面

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.92/5 (5投票s)

2011年11月20日

CPOL
viewsIcon

16360

如何在 ASP.NET 中使用 JavaScript 保护页面免受文本复制。

引言:很多时候,我们出于安全原因不希望用户复制我们的页面。在我的公司,我需要为纺织工程师设计一个网站,让他们可以提交文章,并且他们不希望未注册用户从页面上复制他们的文章。

以下是我实现此功能的方法。为此,我在我的 ASP.NET 项目中使用 JavaScript。

打开您的项目,转到您想要的 .aspx 页面,并将以下 JavaScript 代码复制到 Head 部分。这里我创建了两种类型的函数,以防止鼠标和键盘复制。

<script type="text/javascript">
    function noCopyMouse(e) {
        var isRight = (e.button) ? (e.button == 2) : (e.which == 3);

        if(isRight) {
            alert('This page is copy protected');
            return false;
        }
        return true;
    }

    function noCopyKey(e) {
        var forbiddenKeys = new Array('c','x','v');
        var keyCode = (e.keyCode) ? e.keyCode : e.which;
        var isCtrl;

        if(window.event)
            isCtrl = e.ctrlKey
        else
            isCtrl = (window.Event) ? ((e.modifiers & 
                        Event.CTRL_MASK) == Event.CTRL_MASK) : false;

        if(isCtrl) {
            for(i = 0; i < forbiddenKeys.length; i++) {
                if(forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
                    alert('This page is copy protected');
                    return false;
                }
            }
        }
        return true;
    }
</script>

现在您需要选择页面中您不想复制的部分。在这里,我不希望复制整个页面,所以我使用一个面板,并在面板中创建所有表格。

<asp:Panel ID="Panel1" runat="server">
       <table cellpadding="0" cellspacing="0" width="100%">
           <tr>
               <td>
                   <asp:Label ID="Label5" runat="server" 
                       Text="Try to copy me."></asp:Label>
               </td>
           </tr>
       </table>
   </asp:Panel>

现在转到您的 .cs 页面,并在 Load 事件中编写以下代码。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Panel1.Attributes.Add("onmousedown", "return noCopyMouse(event);");
        Panel1.Attributes.Add("onkeydown", "return noCopyKey(event);");
    }
}

运行您的项目,选择页面中的一些文本,并尝试复制它,将显示警告消息。

© . All rights reserved.