网课作业禁止粘贴?禁用JavaScript了解一下!

网课作业禁止粘贴?禁用JavaScript了解一下!一转眼,放假快半年了早上起来睁开眼,诶呀,考试周又到了。各个科目的期中作业都在各自的平台陆续发布了。各种乱七八糟的科目,让人烦不胜烦。首先在这里郑重声明:本人黑眼圈纯粹是熬夜学习,与多人运动无关,请放心交友。以iwrite英语教学平台为例,先来补一补之前落下的英语作文。刚点到输入框,就弹出来了禁止粘贴的消息框,emmm,这都大学了,师生之间连这点基本的信任都没有吗?不过,作为一名准程序…

大家好,又见面了,我是你们的朋友全栈君。

一转眼,放假快半年了

早上起来睁开眼,诶呀,考试周又到了。各个科目的期中作业都在各自的平台陆续发布了。各种乱七八糟的科目,让人烦不胜烦。首先在这里
郑重声明:本人黑眼圈纯粹是熬夜学习,与多人运动无关,请放心交友。

在这里插入图片描述
iwrite英语教学平台为例,先来补一补之前落下的英语作文。刚点到输入框,就弹出来了禁止粘贴的消息框,emmm,这都大学了,师生之间连这点基本的信任都没有吗?
在这里插入图片描述

不过,作为一名准程序员,这个问题可难不倒我。编程的本质是处理信息,编程的意义是提高效率,编程的快乐在于解决问题,既然今天遇到了这个问题,那就倒杯茶,慢慢来解解这个bug。
在这里插入图片描述

为什么无法粘贴?

首先要来了解ctrl+c复制下来的内容,为什么无法通过ctrl+v进行粘贴?通过前端知识的学习,我知道网页上的消息弹框鼠标行为等都是由javascript控制的。那么在网页上禁止粘贴,实际上就是网页对鼠标右键的粘贴行为进行了禁止

查阅资料后发现的确如此,下面是JavaScript中对网页特定功能开启或关闭的语句,显然,类似iwrite这样的平台的Js文件中,对粘贴功能进行了false处理。如果在网站开发中你也想要为你的网页加入类似这样恶心的功能,直接将下面这些代码录入到你的Js代码中即可。

script type=text/javascript
// 禁止右键菜单
document.oncontextmenu = function(){ 
    return false; };
// 禁止文字选择
document.onselectstart = function(){ 
    return false; };
// 禁止复制
document.oncopy = function(){ 
    return false; };
// 禁止剪切
document.oncut = function(){ 
    return false; };
// 禁止粘贴
document.onpaste = function(){ 
    return false; };
/script

从技术层面讲,直接在前端页面找到document.onpaste = function(){ return false; };语句,将其返回值改为true即可,但是,更多的网页对鼠标实现的是动态Js事件,这个思路首先被Pass掉,那就只能通过禁用JavaScript来跳过禁用粘贴的语句了。

在这里插入图片描述

开始解Bug

既然知道了原因是因为JavaScript对粘贴功能进行了限制,那么解Bug的思路就很明确了,只要浏览器禁用JavaScript,问题就迎刃而解了。

在这里插入图片描述
等等,问题真的只是禁用JavaScript这么简单吗?实际上确实如此,禁用了JavaScript就相当于关闭了前端校验,在程序界有这样一句话:前端校验防君子,后端校验防小人。说的就是前端校验的安全性为0,而后端校验的安全性则固若金汤。

前端校验一般是为了增加用户体验,不过禁止粘贴这个功能的体验就很微妙,这就很烦;而重要的校验,如登录用户名、密码等重要信息,都是要交给后端,通过后端技术,如JSR303等进行校验。前者减少了服务器的压力,后者更加安全,两者配合额,妙哉妙哉。

举个栗子:假设有一个简单的用户登录功能,而我们只做了前端检验。那么此时用户可以按下F12键,通过浏览器的控制台来人为的修改前端代码,手动将前端校验规则改变或者直接关闭,此时即使输入错误的密码,也会可以登录成功的。原因就是缺少更加安全的后端校验。

幸运的是,禁用粘贴这个功能是由JavaScript控制的,仅仅涉及了前端内容。下面通过禁用JavaScript的方法解决这一问题。
在这里插入图片描述

解决方案

首先,在需要进行粘贴的页面按下F12键,打开控制台
在这里插入图片描述
然后,在控制台页面按下F1键,打开控制台设置

在这里插入图片描述
在控制台设置页面找到并勾选Debugger中的Disable JavaScript选框。
在这里插入图片描述

此时,JavaScript功能已经被禁用,页面的粘贴功能已经恢复了,赶紧粘贴自己的小作文过来。

在这里插入图片描述
提交后,成功得到了81分的成绩,所以猜测,页面的计时功能并不在机器评分的考虑范畴之内,可以放心使用。

在这里插入图片描述

结语

在这里插入图片描述

上面的解决方案,实际上对一些网站上内容无法复制的情况也是适用的。如某度文库,就是需要付费才可以进行文字复制,通过禁用JavaScript的方式,同样可以实现大段文字的复制。通过解决这个学习上的小问题,可以看到,其实无论前端还是后端,其实都是很有意思的嘛!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141783.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • navicat 2021激活码【在线注册码/序列号/破解码】

    navicat 2021激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • bzero 和memset的区别[通俗易懂]

    bzero 和memset的区别[通俗易懂]bzero  原型:externvoidbzero(void*s,intn);  用法:#include  功能:置字节字符串s的前n个字节为零且包括‘\0’。  说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。在P

    2022年10月13日
  • sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义

    sklearn 中 Logistics Regression 的 coef_ 和 intercept_ 的具体意义使用sklearn库可以很方便的实现各种基本的机器学习算法,例如今天说的逻辑斯谛回归(LogisticRegression),我在实现完之后,可能陷入代码太久,忘记基本的算法原理了,突然想不到coef_和intercept_具体是代表什么意思了,就是具体到公式中的哪个字母,虽然总体知道代表的是模型参数。好尴尬,折腾了一会,终于弄明白了,记录下来,以说明自己tooyoung。正文我…

    2022年10月23日
  • 使用HttpClient4,post提交multipart/form-data数据

    使用HttpClient4,post提交multipart/form-data数据问题由来: 在Vert.x的项目中,进行公众号开发的时候,发现回复用户图片的时候需要先上传图片,获取一个media_id,然后拿着这个media_id去发送数据。 问题是,Vert.x的vertx-web-client不提供表单文件上传(form-data)方式post请求。     于是,只能找一个HttpClient方法。发现组装一个这样的请求,并不简单解

  • sql怎么调用存储过程_oracle sql分页查询

    sql怎么调用存储过程_oracle sql分页查询数据库用的是Oracle,Mybatis自动封装的分页,sql语句在PLSQL中执行没有问题,放在代码里面运行的时候就报错:未明确定义列。通过log打印的sql语句拷出来执行,发现嵌套上分页就会报错。问题原因:sql语句中有个列的别名重复,导致嵌套了分页后,数据库不能确定我们要的到底是哪个列,就会报未明确定义列。网上还有网友说的其他原因大家可以参考,比如

  • RIPv2配置

    RIPv2配置

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号