拖放事件有的事件在被拖放元素上触发,有的事件则在放置目标上触发。 可拖动元素在某个元素被拖动时,会触发以下事件: dragstart、 drag、dragend 。在按住鼠标键不放并开始移动鼠标的那一刻,被拖动元素上会触发 dragstart 事件。拖动开始时。 dragstart 事件触发后,只要目标还被拖动就会持续触发 drag 事件。当拖动停止时,会触发 dragend 事件。 给一个元素添加 draggable="true" 属性,可以拖动元素。目标元素把元素拖动到一个有效的放置目标上时,会依次触发以下事件: dragenter、dragover、dragleave 或 drop。把元
野猪佩奇 2023-09-19 JavaScript 443
1,实现在终端同一行输出不同内容import readline form 'readline'; console.clear(); setInterval(() = { //删除光标所在行 readline.clearLine(process.stdout, 0); //移动光标到行首 readline.cursorTo(process.stdout, 0, 0) process.stdout.write(new Date().toLocaleString(), 'utf-8'); }, 1000); 2, 实现进度条import readline form 'readline
野猪佩奇 2023-08-11 JavaScript Node.js 1076
一,过去 跨站请求伪造,也称为CSRF或XSRF, 它源于网站必须向另一个站点发出请求的简单功能。 假设我在 https://a.com 面中嵌入了以下表单。 form action="https://your-bank.com/transfer" method="POST" id="stealMoney" input type="hidden"name="to"value="Scott Helme" input type="hidden"name="account"value="14278935" input type="hidden"name="amount"v
野猪佩奇 2023-07-26 Node.js 595
很多视口我们要对横屏和竖屏显示不同的布局,所以我们需要检测在不同的场景下给定不同的样式:1 JavaScript检测横屏window.orientation:获取屏幕旋转方向window.addEventListener("resize", ()= { if (window.orientation === 180 || window.orientation === 0) { // 正常方向或屏幕旋转180度 console.log('竖屏'); }; if (window.orientation === 90 || window.orientation === -9
野猪佩奇 2023-07-21 CSS JavaScript 622
在 JavaScript 中直接输出 0.1 + 0.2 结果是 0.30000000000000004。原因如下:JavaScript 使用 Number类型表示数字(整数和浮点数),计算机遵循IEEE 754标准,所有语言都会有这个问题。通常用64位来表示一个数字:第0位:符号位,0表示正数,1表示负数(s);第1位到第11位:储存指数部分(e);第12位到第63位:储存小数部分(即有效数字)f。十进制转换为二进制方法是,小数本身乘以2,取整数位作为二进制表示位,然后取其小数位参与计算(乘以2),如此循环往复,只至小数位乘以2的结果为零。结果0.1和0.2的二进制,后面无限循环多余的数将会
野猪佩奇 2023-07-17 JavaScript 开发技巧 1120
文章表中,tags 字段存储着一个或者多个标签,标签之间使用“,”隔开,比如,一篇文章的 tags 字段是 “前端,JavaScript,SCSS,HTML”,现在想删除“JavaScript”,变成 “前端,SCSS,HTML”。方法如下:UPDATE tb_article AS a SET a.tags=TRIM(BOTH ',' FROM REPLACE(concat(',',a.`tags`,','), ',JavaScript,', '')) WHERE FIND_IN_SET('JavaScript', a.tags); 核心部分是:UPDATE tb_article AS a S
野猪佩奇 2023-07-04 MySQL 1301
在浏览器中 RESTful API 执行 delete 返回204无法获取 Body,也就是说执行成功后,只能返回空的。无法获取到返回的 Body 内容。使用 restclient 可以获取到 body。大多数人都认为204是成功删除的良好响应代码,因为通常没有充分的理由在删除某些内容后返回响应正文。所以,如果 delete 操作成功且响应主体为空,则返回204。如果 delete 操作成功且响应主体为非空,则返回200。
update tb_article set created_at=date_add(created_at,interval+600 day); update wp_posts set post_date=date_add(post_date,interval+600 day); update wp_posts set post_date_gmt=date_add(post_date_gmt,interval+600 day); update wp_posts set post_modified=date_add(post_modified,interval+600 day); update
野猪佩奇 2023-04-28 MySQL 1078
由于 JavaScript 暂时无法直接编译成可执行的二进制代码,对 JavaScript 代码进行混淆加密,就是 JavaScript 代码保护的正确方法。JavaScript 混淆加密有不少产品可用,有免费开源的,也有商业的。免费的比如uglifyjs 、javascript-obfuscator、商业的比如jscrambler、JShaman,特别值的一提的是jshaman,不但强大,而且是国产的,是具备研发能力,有核心竞争力的国内产品,在js代码保护领域,jscrambler是国际顶级的厂商,而国内的jshaman比它毫不逊色。比如一段js代码:function NewObject(p
野猪佩奇 2023-03-27 JavaScript 1364
阿里巴巴 Java 编程规范,【强制】任何货币金额,均以最小货币单位且为整型类型进行存储。为什么要这样做呢,因为常常出现数据库里的数据获取后,直接返回给前端的。因为在数据传输过程中使用的是2进制,数据在进制转换时会丢失精度。浮点数使用JSON等格式传输数据时,会被转为二进制,二进制下很多浮点数是无限小数,而传输数据时候又不可能把无限制的传输这个数,只能把它截断,当浮点数被截断后,再转回十进制,就不是一个精确值了,所以就会出现接口返回{"a":0.3},但是调用接口实际获得{"a":0.30000000000000004}的问题。参考:https://javascript.net.cn/arti
野猪佩奇 2023-01-09 JavaScript 979
用 JavaScript 实现数字增加滚动动画方案一: h1 id="numBox" /h1 script function numRunFun(num, maxNum){ var numBox = document.getElementById("numBox"); var num = num; var maxNum = maxNum; var timer = setInterval(function(){ num++; if(num = maxNum){ numBox.innerHTML = ma
野猪佩奇 2023-01-03 JavaScript 854
使用 new Date(string) 构造 Date 对象,如果传入非日期格式的字符串,仍然能构造出 Date 对象,输出date,结果为Invalid Date使用typeof判断date的类型,得到结果为“object”使用instanceof检测date是否为Date类型,结果为true。使用Date的getTime()方法,Invalid Date对象返回的是一个NaN,可以利用这点来检查Date对象是否为Invalid Date。 new Date(dateString)参数dateString一个符合 RFC2822 或 ISO 8601 日期格式的字符串(其他格式也许也支持,但
野猪佩奇 2022-11-07 JavaScript 编程开发 2315
使用 url.parse() 函数转换 'https://www.yuque.com!.evil.com' 'https://www.yuque.com%0a.evil.com' 会变成: 'https://www.yuque.com/!.evil.com' 'https://www.yuque.com/%0a.evil.com' 可以看到 legacy API 并不认为 ! 字符属于域名的一部分,所以原始的 www.yuque.com!.evil.com 域名其实是非法的,而为了不抛异常,legacy API 尝试对它进行了一次转换,把它当成 www.yuque.com/!.ev
代码: p 啦啦啦啦 啦啦 啦啦啦 div 呱呱呱 /div /p 在浏览器中渲染成了: p 啦啦啦啦 啦啦 啦啦啦 /p div 呱呱呱 /div p /p 原因是 p 标签里面不能嵌套 ul、div 等块级元素,只能嵌套行内元素。h1~h6之间也不能相互嵌套。
野猪佩奇 2022-11-05 JavaScript 1571
例子:select SUBSTRING_INDEX(thumbnail,'/',-1) as file_name, thumbnail, SUBSTRING_INDEX(thumbnail,'.',-1) as suffix, from tb_article where thumbnail != ''; 介绍:这里用到 MySQL 的 SUBSTRING_INDEX(str,delim,count) 函数,LENGTH(str) 函数,REPLACE(str,from_str,to_str) 函数,和数据库的一张辅助表help_topic(这张表在默认的mysql库里)。SUBST
野猪佩奇 2022-11-05 MySQL 1373
JavaScript中的数据类型自动转换时,空数组[]或空对象{}都的布尔类型不是false,而是 true当JavaScript遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean函数。因此除了以下六个值,其他都是自动转为true:undefinednull-00或+0NaN''(空字符串)
野猪佩奇 2022-11-04 JavaScript 974
&::-webkit-scrollbar { width: 5px; height: 8px; background-color: #aaa; /* or add it to the track */ } &::-webkit-scrollbar-thumb { background: #000; } 主要文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/::-webkit-scrollbar
野猪佩奇 2022-11-04 CSS 1047
因为各种现代话框架的流行,SQL 注入的威胁相对已经减少很多。但是在看不见的角落,还是存在SQL注入的威胁。SQL 预处理可以解决绝大部分 SQL 注入问题,但是有些地方不能预处理,或者需要变通的方式处理这些问题。比如表名/列名/排序动态传入的场景,这些地方不能预编译,因此很多人还是直接拼接的,而没有有效过滤。 还有 LIKE语句/IN语句中,因为这两个地方的预编译写法都有些特殊,比如 IN 常常使用 FIND_IN_SET 函数代替。
野猪佩奇 2022-11-03 MySQL 1209
Node.js 18.x 开始支持内置单元测试 单元测试很重要,很多新兴的编程语言都是会内置对应的能力,但 Node.js 这块一直都是由社区来实现,前端同学耳熟能详的 Test Runner 有 Mocha、Jest。 2022年04月19日正式发布的 Node.js 18.x ,终于,官方支持了 Test 能力。Fetch API 也被集成到这个版本中了。测试 API 接口在一定程度上代替 SuperTest 了。 代码: import test from 'node:test'; import assert from 'assert/strict'; // 等价于 describe()
MySQL 中,不可直接修改数据库名称。有一种变通的方式如下:如果有一个数据库名称是 “old_database”,想把这个数据库的名字改成 “new_database”;首先创建一个新的数据库 “new_database”create database new_database; 获取所有源库的表名use information_schema; select table_name from TABLES where TABLE_SCHEMA=’old_database’; 然后按照以下命令一个个修改rename table old_database.[tablename] to new_da
野猪佩奇 2022-03-27 MySQL 1435
随机推荐
CSS 改变 svg 图片颜色
WordPress RESTful API 的授权方式
JavaScript 使用 qrcode 生成二维码
Content Security Policy(CSP)简介
TypeScript 和 Koa 实践
JavaScript video 教程
HTML input range 数值范围选择器
选择排序