先,禁用 JavaScript 可以通过设置 window.disableJavascript 属性为 true 来实现。你可以在浏览器的开发者工具中执行以下代码来禁用 JavaScript:
window.disableJavascript = true;
然而,这种方法会彻底禁用网页中的所有 JavaScript,包括复制、粘贴和其他交互功能,这显然不是一个好的用户体验。
然而,这种方法会彻底禁用网页中的所有 JavaScript,包括复制、粘贴和其他交互功能,这显然不是一个好的用户体验。
相比之下,如果只想禁用页面中某些 JavaScript 功能,可以使用以下两种方法:
1. 禁用特定的 JavaScript 代码块
可以在页面中标记出需要禁用的 JavaScript 代码块,并在用户点击禁用按钮时动态地添加一个带有 disabled 属性的 script 标签来禁用这些代码块。以下是一个示例:
<script>
function disableJavaScriptBlocks() {
const blocksToDisable = document.querySelectorAll('.js-disabled');
for (const block of blocksToDisable) {
const script = document.createElement('script');
script.setAttribute('disabled', 'true');
script.textContent = block.textContent;
block.parentNode.replaceChild(script, block);
}
}
</script>
<button onclick="disableJavaScriptBlocks()">禁用 JavaScript</button>
<div class="js-disabled">
这是需要禁用的 JavaScript 代码块。
</div>
这个示例中,我们定义了一个 disableJavaScriptBlocks 函数来禁用页面中带有 js-disabled 类的 JavaScript 代码块。当用户点击禁用按钮时,这个函数会遍历页面中所有带有 js-disabled 类的元素,并为每个元素动态地创建一个带有 disabled 属性的 script 标签来禁用这些代码块。
2. 替换特定的 JavaScript 函数
如果只想禁用某个 JavaScript 函数,可以动态地替换这个函数。以下是一个示例:
<script>
function disableCopy() {
const originalCopy = document.execCommand;
document.execCommand = function(command) {
if (command === 'copy') {
console.log('禁止复制!');
return false;
}
return originalCopy.apply(this, arguments);
};
}
</script>
<button onclick="disableCopy()">禁用复制</button>
这个示例中,我们定义了一个 disableCopy 函数来禁用页面中的复制功能。当用户点击禁用按钮时,这个函数会动态地替换 document.execCommand 函数,如果用户尝试执行 copy 命令,它会输出一条提示信息并返回 false,从而阻止复制操作。
览网页时,当从A页面点击跳转到B页面后,一般情况下,可以点击浏览器上的“后退”按钮返回A页面。
如果进入B页面后,B页面想让访问者留下,禁止返回,是否可以实现呢?
这简直是要控制浏览器的行为,虽然有些邪恶,但确实可以实现,使用特殊的JavaScript代码就可实现。
方法如下:
监听浏览器的popstate事件,该事件会在用户点击浏览器的回退按钮时被触发。
然后,使用History.pushState()方法向当前浏览器会话的历史堆栈中添加一个陷阱状态,该状态会使“回退”操作无效。
<script>
//浏览器返回键事件
pushHistory();
window.addEventListener("popstate", function(e) {
//判断移动端
var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
var equipmentType = false;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) != -1) {
equipmentType = true;
break;
}
}
if (equipmentType) {
$("#mask-back").show();
$("#mask-back .back-close").on("click", function() {
$("#mask-back").hide();
})
}
pushHistory(); //注,此处调用,可以让用户一直停留着这个页面
}, false);
function pushHistory() {
var stateeee = {
title: "title",
url: "#"
};
window.history.pushState(stateeee, "title", "#");
}
</script>
建立两个文件:a.html、b.html。
a文件内容简单写一句代码:
<a href="b.html">goto b.html</a>。
b文件内容写入上面的源码。
打开a页面,点击链接进入b页面,这时再点击浏览器上的“后退”按钮,会发现:操作无效,无法后退。
这个黑暗的技巧,虽然使用了不常见的技术方法,但查看页面源码很容易发现其实现原理。
为了保护代码、防止代码被分析,可以对上面的JavaScript代码加密,加密使用JShaman。
进入JShaman官网,贴入代码:
在配置中,勾选“字符串加密”:
然后生成混淆加密的JavaScript代码:
复制粘贴回b文件:
这时,代码成为加密状态,虽然不影响运行,是万万不可能了。
avascript:禁止按钮,3种方法实现短信验证倒计时
表单中经常会用到手机短信验证或者邮箱验证,点击按钮发送验证码后会倒计时,然后按钮会成灰色不可点击状态,或者点击无效。这可以预防不法分子或者机器刷验证码,下面讲一下使用禁止按钮实现短信验证倒计时,你知道有几种方法呢?
禁止按钮短信验证
首先来了解一下禁止按钮的实现和原理:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function ()
{
var oBtn = document.getElementById('btn');
//禁止按钮
oBtn.disabled = false;
oBtn.onclick = function ()
{
oBtn.disabled = true;
alert(oBtn.value);
}
}
</script>
</head>
<body>
<input type="button" id="btn" value="点我试试">
</body>
</html>
短信验证
1、第一种方法
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function ()
{
var oBtn = document.getElementById('btn');
var timer = null;
var n = 5;
oBtn.onclick = function ()
{
oBtn.disabled = true;
timer = setInterval(function(){
n--;
oBtn.value = n + '秒之后重新发送';
if (n == 0) {
clearInterval(timer);
oBtn.value = '5秒之后重新发送';
oBtn.disabled = false;
n = 5;
}
}, 1000);
}
}
</script>
</head>
<body>
<input type="button" value="5秒之后重新发送" id="btn">
</body>
</html>
短线验证按钮倒计时方法
2、第二中方法
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function ()
{
var oBtn = document.getElementById('btn');
var timer = null;
var n = 5;
oBtn.onclick = function ()
{
this.disabled = true;
var _this = this;
// alert(_this);
timer = setInterval(function(){
// alert(_this);
n--;
_this.value = n + '秒之后重新发送';
if (n == 0) {
clearInterval(timer);
_this.value = '5秒之后重新发送';
_this.disabled = false;
n = 5;
}
}, 1000);
}
}
</script>
</head>
<body>
<input type="button" value="5秒之后重新发送" id="btn">
</body>
</html>
短信验证倒计时
3、第三种方法
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script type="text/javascript">
window.onload = function ()
{
var oBtn = document.getElementById('btn');
var timer = null;
var n = 5;
var flag = false;
oBtn.onclick = function ()
{
if (flag) {
return;
}
flag = true;
var _this = this;
// alert(_this);
timer = setInterval(function(){
// alert(_this);
n--;
_this.value = n + '秒之后重新发送';
if (n == 0) {
clearInterval(timer);
_this.value = '5秒之后重新发送';
flag = false;
n = 5;
}
}, 1000);
}
}
</script>
</head>
<body>
<input type="button" value="5秒之后重新发送" id="btn">
</body>
</html>
请关注键盘码农,把你想知道的问题在下面留言评论,更新你想要的答案,专为你解答!
*请认真填写需求信息,我们会在24小时内与您取得联系。