前端wxml取后台js变量值_这些鲜为人知的前端冷知识,你都GET了吗?

134a30829e535f4735e6396f2827a5f2.png

背景

最近公司项目不多,比较清闲,划水摸鱼混迹于各大技术博客平台,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来,不由的发出一声感叹!

前端可真是博大精深

于是突发奇想,现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容,俗话说,独乐乐不如众乐乐,大家一起来接受前端的洗礼吧!!!

论被玩坏了的前端

HTML篇

浏览器地址栏运行JavaScript代码

这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开头后跟要执行的语句。比如:

javascript:alert('hello from address bar :)');

将以上代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。

需要注意的是如果是通过copy paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以需要手动添加起来才能正确执行,而Firefox中虽然不会自动去掉,但它根本就不支持在地址栏运行JS代码,sigh~

浏览器地址栏运行HTML代码

如果说上面那条小秘密知道的人还算多的话,这条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以直接运行HTML代码!

比如在地址栏输入以下代码然后回车运行,会出现指定的页面内容。

data:text/html,<h1>Hello, everybody!</h1>

471e56e6f20098332869972de807d42c.png

浏览器秒变编辑器

这个还是在浏览器地址栏上面做文章,将以下代码复制粘贴到浏览器地址栏,运行后浏览器就变成了一个原始简单的编辑器,和window自带的notepad差不多,长见识了吧,话不多说,我们来试试。

data:text/html, <html contenteditable>

76714d1ff6fea15c652004472e77aa4a.gif
归根结底多亏了HTML5中新加的contenteditable属性,当元素指定了该属性后,元素的内容成为可编辑状态。

同理,在控制台执行以下代码,同样可以将整个页面变得可以编辑。

document.body.contentEditable='true';

实时编写样式的输入框

同理,也是利用了HTML5中的contenteditable属性,巧妙的在body增加一个可编辑的style标签。

<body><style style="display:block; position: fixed;" contentEditable>body { background: red; }</style>
</body>

4b460bfc49328e3dbf7707ad6d2ac6bb.gif

利用a标签解析url

很多时候我们有从一个URL中提取域名,查询关键字,变量参数值等的需要,然而处理 url 字符串是比较麻烦的,可以使用 a 标签自动解析 url。

主要方法就是在JS中创建一个a标签,然后将需要处理的URL赋值给我们新创建的a标签的href属性,然后就可以得到我们想要的东西了。

var a = document.createElement('a');
a.href = 'https://juejin.cn/user/2796746682939054/posts';
console.log(a.host);

c796df559e083dd2df2f88993e9d9a62.png

利用这一方法,稍微进行封装一下,就可以得到一个非常实用的工具函数了,下面提供一个网上常见的封装示例。

function urlParse(url, key) {var a = document.createElement('a')a.href = urlvar result = {href: url,protocol: a.protocol.replace(':', ''),port: a.port,query: a.search,params: (function(){var ret = {}, centArr,seg = a.search.replace(/^?/, '').replace(/^?/,'').split('&')for (i = 0, len = seg.length; i < len; i ++) {if (!seg[i]) { continue }centArr = seg[i].split('=')ret[centArr[0]] = centArr[1]}return ret}()),hash: a.hash,file: (a.pathname.match(//([^/?#]+)$/i) || [, ''])[1],path: a.pathname.replace(/^([^/])/, '/$1'),relative: (a.href.match(/tps?://[^/]+(.+)/) || [, ''])[1],segments: a.pathname.replace(/^//, '').split('/')}a = nullreturn key ? result[key] : result
}
H5 有新的 API URL 也可以快速的处理一个链接
var url = new URL('https://www.baidu.com/')
url.hash
...

带有 Id 属性的元素,会创建全局变量

在一张HTML页面中,所有设置了ID属性的元素会在JavaScript的执行环境中创建对应的全局变量,这意味着document.getElementById像人的智齿一样显得多余了。但实际项目中最好还是老老实实该怎么写就怎么写,毕竟常规代码出乱子的机会要小得多。

<div id="test"></div>
<script>console.log(test)
</script>

e9b17685d715ff182d36e173f1d641f8.png

script标签保存任意信息

我们可以通过将script标签的type属性设置为'text',然后就可以在里面保存任意信息,后面在js中获取信息也十分的方便。

<script type="text" id="template"><h1>欢迎光临</h1>
</script>
var text = document.getElementById('template').innerHTML

CSS篇

文字模糊效果

只需要添加以下两行代码,即可达到将文字模糊处理的目的。

color: transparent;
text-shadow: #111 0 0 5px;

3a23687712c41c521373692bba330842.png

我们这群人,苦没有真正苦过,爱没有用力爱过。 每天受着信息大潮的冲击,三观未定又备受曲折。 贫穷不再是正义,又妄图不让金钱成为唯一的追求。 过早看到了更大的世界,勤奋却又不过三天。 热血透不过屏幕,回忆止于游戏和工作。 像一群没有根的孩子,在别人的经历和精神里吵闹。

正常文字VS模糊文字,是不是很酷,哈哈哈。

毛玻璃效果

其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性。但是要做一个好的毛玻璃效果,需要注意很多细节。下面提供一个简单示例:

.blur {display: block;width: 300px;height: 300px;margin: 100px auto;filter: blur(10px);
}<img src="./img/test.png" class="blur" alt="">

cef1c02fb23f22d475a9582cbb3698e7.png
图片是我养的可爱的蓝胖子(●'◡'●)

多重边框

在css中,我们可以利用重复指定box-shadow来达到多个边框的效果。

/*CSS Border with Box-Shadow Example*/
div {box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2);height: 200px;margin: 50px auto;width: 400px
}

7d9aff896b568f482c1da0162bceb283.png

CSS中也可以做简单运算

在日常开发中,我们时常会遇到这样的需求:

左侧或者右侧宽度固定,然后剩余部分自动充满。

可能很多小伙伴会想到用flex布局,通过设置flex:1;使其自动充满,当然这个做法也是对的,但是我们还有更为简便的方法,那就是利用css的calc函数,示例代码如下:

.container{width: calc(100% - 50px);
}

calc() 函数用于动态计算长度值。

  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 "+", "-", "*", "/" 运算;
  • calc()函数使用标准的数学运算优先级规则;

JS篇

两个变量值的交换

一般两个变量值交换,大家首先想到的可能是通过一个中间变量进行转换,但是其实还有更快的写法,代码如下:

var a=1, b=2
a=[b, b=a][0]

浮点数快速向下取整

JavaScript中是没有整型概念的,但利用好位操作符可以轻松处理,同时获得效率上的提升。

|0和~~是很好的一个例子,使用这两者可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快。在处理像素及动画位移等效果的时候会很有用。

(12.4 / 4.13) | 0
// => 3
~~(12.4 / 4.13)
// => 3

生成随机字符串

生成随机字符串,我们第一想到的,可能是先定义一个字符串数组,然后通过随机取数组中的字符进而拼接成一个随机长度的字符串。

但是下面还有一个更简单的方法,代码如下:

function generateRandomAlphaNum(len) {var rdmString = "";for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));return rdmString.substr(0, len);
}
主要是利用了toString() 方法的特性

b341160c99523e4e76a9bb0217bdbe6a.png

什么情况下a === a - 1

咋一看,这个全等式怎么看都是false,但是万物存在既有理,接下来,让我们看看哪些情况下该等式是成立的呢。

第一种情况就是Infinity,或者可以说是正负Infinity。

知识点: 在 JavaScript 里,Infinity是一个 Number 类型的字面量,表示无穷大。当一个 Number 类型的值,在运算过程中超过了所能表示的最大值,就会得到无穷大。
let a = Infinity;console.log(a === a - 1); // truelet b = -Infinity;console.log(b === b - 1);  // true
那么还有没有其他情况下也成立呢?或者说换成a == a-1又有哪些情况成立呢?欢迎各位大佬在下面评论区参与讨论。

恶搞篇

CSS恶搞

大家猜测一下,如果在代码中加上一下样式,会是一个什么效果?

{cursor: none !important;
}

67b0851c6658a063e0346fcd3c1281cd.png

(图片来源于网络,如有侵权请联系我删除)

console.log恶搞

Chrome的console.log是支持对文字添加样式的,甚至log图片都可以。于是可以重写掉默认的log方法,把将要log的文字应用到CSS的模糊效果,这样当有人试图调用console.log()的时候,出来的是模糊不清的文字。好冷,我表示没有笑。

var _log = console.log;
console.log = function() {_log.call(console, '%c' + [].slice.call(arguments).join(' '), 'color:transparent;text-shadow:0 0 2px rgba(0,0,0,.5);');
};
console.log('你是逗逼吗')

7d8397a33958b3271478fbee6d9ebcd1.png

如果本篇文章有任何错误和建议,欢迎大家指出!

作者:monkeysoft
链接:https://juejin.cn/post/6901528736567394318
来源:掘金

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(转-这篇文章非常棒) Thread的中断机制(interrupt)

转自&#xff1a; Thread的中断机制(interrupt)-这篇文章非常棒 Thread的中断机制(interrupt) - 寂静沙滩 - 博客园先看收集了别人的文章&#xff0c;全面的了解下java的中断&#xff1a;中断线程线程的thread.interrupt()方法是中断线程&#xff0c;将会设置该线程的中断状态…

深入理解乐观锁与悲观锁

转载自 [初级]深入理解乐观锁与悲观锁在数据库的锁机制中介绍过&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。 乐观并发控制(乐观锁)和悲观并发控制&a…

Z.ExtensionMethods 一个强大的开源扩展库

今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库&#xff0c;确发现只搜到跟这个真正相关的才两篇博文而已&#xff0c;我都点进去看了一下&#xff0c;也都只是提到而已&#xff0c;没有专门介绍&#xff0c;才引起我写这篇文档。 一&#xff0e; Z.E…

python isodd奇偶_Python这些位运算的妙用,绝对让你大开眼界

位运算的性能大家想必是清楚的&#xff0c;效率绝对高。相信爱好源码的同学&#xff0c;在学习阅读源码的过程中会发现不少源码使用了位运算。但是为啥在实际编程过程中应用少呢&#xff1f;想必最大的原因&#xff0c;是较为难懂。不过&#xff0c;在面试的过程中&#xff0c;…

java线程中断

【README】 本文po出了不同场景下线程中断的不同开发方式&#xff0c;包括阻塞&#xff0c;非阻塞&#xff0c;io阻塞线程等&#xff1b; 本文部分内容转自&#xff1a;这篇博文写的非常好 Thread的中断机制(interrupt) - 寂静沙滩 - 博客园先看收集了别人的文章&#xff0c…

WEB API系列(一):WEB API的适用场景、第一个实例

在我前一篇博客《WebAPI前置知识:HTTP与RestfulAPI》中已经给各位简单介绍了HTTP协议与RestFul API的关系&#xff0c;以及一些基本的HTTP协议知识&#xff0c;在这些知识的铺垫下&#xff0c;今天&#xff0c;我们一起来讨论一下WEB API的适用场景&#xff0c;然后写我们第一个…

rpa文件怎么提取内容_怎么编辑pdf文件内容?有什么软件可以编辑pdf文件吗?

怎么编辑pdf文件内容&#xff1f;我是2020年大学新生&#xff0c;选择学习的专业是财务管理。为了更快、更深入地了解更多专业知识&#xff0c;我上网查找、下载了很多相关资料。不过&#xff0c;从网上保存下来的资料文件大多是pdf格式的&#xff0c;想要编辑它还得先转word。…

Future取消线程执行

【README】 本文总结于 《java并发编程实战》 page121&#xff0c;非常棒的一本书&#xff1b; 【1】Future 1&#xff0c;介绍&#xff1a;future 用于管理任务的生命周期&#xff0c;处理异常&#xff0c;以及实现取消&#xff1b; 2&#xff0c;future.cancel() 取消方法…

Nancy之结合tinyfox给我们的应用提供简单的数据服务

说到提供数据服务给我们的一些应用&#xff0c;估计用的最多的也就是json和xml这两种数据格式 实现的方法也是多种多样&#xff0c;web api,mvc的jsonresult和contentresult...等等 本文是结合Nancy、TInyFox、Owin等来实现的 一、前提工作 新建一个空的web应用程序 添加相应的…

javaweb调用python算法_请教怎么用java远程调用python? 多谢

请问如何用java远程调用python? 谢谢&#xff01;本帖最后由 blackkettle 于 2015-05-07 13:00:41 编辑比如有一台机器 A上安装了python, 另一台机器B要用java 调用A 上的python的某个函数&#xff0c;输入数据在B机器上&#xff0c;所有的计算在A机器完成&#xff0c;结果返回…

(转)如何查看java本地方法

在线查看本地代码&#xff0c; refer2 http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/tip/src/os/linux/vm/os_linux.cpp 我们知道在java中查看java源码时看到native方法在java层面上就到头的&#xff0c;如果还想继续往下看就需要看jdk是如何实现的&#xff0c;今天就分…

统一配置中心的设计方案

转载自 统一配置中心的设计方案对于配置文件&#xff0c;我们不陌生&#xff0c;它提供我们可以动态修改程序运行能力。引用别人的一句话就是&#xff1a;系统运行时(runtime)飞行姿态的动态调整。我可以把我们的工作称之为在快速飞行的飞机上修理零件。我们人类总是无法掌控和…

微软CEO纳德拉恢弘计划:让开发者始终忘不了微软

BI中文站 4月11日 报道 当微软前CEO史蒂夫•鲍尔默&#xff08;Steve Ballmer&#xff09;在2000年喊出“开发者&#xff0c;开发者&#xff0c;开发者”的口号时&#xff0c;他可能有点儿激动&#xff0c;但是他的观点是对的。 30年前当Windows 1.0推出的时候&#xff0c;这种…

python scratch unity_Unity3D研究院之2D游戏开发制作原理(二十一)

经过了4个月不懈的努力&#xff0c;我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了。这里MOMO先打一下广告&#xff0c;图灵的出版社编辑成员都非常给力&#xff0c;尤其是编辑小花为这本书付出了很大的努力&#xff0c;还有杨海玲老师&#xff0c;不然我也无法完成这…

原码补码与反码

【README】 1.本文内容总结自“哈工大刘宏伟”老师的mooc视频《计算机组成原理》on bilibili&#xff1b; 2.为了便于理解&#xff0c;本文引入了逗号分割符号部分和数值部分&#xff0c;计算机存储数据的时候没有逗号&#xff1b; 【1】原码表示法 原码定义&#xff1a; 原…

第一篇 Entity Framework Plus 之 Audit

一般系统会有登陆日志&#xff0c;操作日志&#xff0c;异常日志&#xff0c;已经满足大部分的需求了。但是有时候&#xff0c;还是需要Audit 审计日志&#xff0c;审计日志&#xff0c;主要针对数据增&#xff0c;改&#xff0c;删操作数据变化的记录&#xff0c;主要是对数据…

本想试试看,结果却拿到了京东的Offer

转载自 本想试试看&#xff0c;结果却拿到了京东的Offer 最近&#xff0c;春招已经基本接近尾声了&#xff0c;我找了几位拿到名企Offer的粉丝&#xff0c;请他们总结了面试经验&#xff0c;近期会分批的推送给大家。希望给那些正在准备秋招的同学提供些帮助。 今天给大家分享的…

ping 命令使用代理_网络检测知识篇:ping命令使用知识,你知道几点?

Ping命令其实是一个非常好的网络故障诊断工具&#xff0c;相信阅读完本文对大家一定有些帮助。如果大家网络遇到问题&#xff0c;不妨试试以下方法。首先使用Ping命令诊断本地TCP/IP协议是否安装正常&#xff0c;检测方法如下&#xff1a;从电脑开始里找到运行&#xff0c;快捷…

8.4-中断系统小结(cpu中断七个问题)

【README】 本文转自bilibili《计算机组成原理&#xff08;哈工大刘宏伟&#xff09;》的视频讲解&#xff0c;非常棒&#xff0c;墙裂推荐&#xff1b; 【1】中断介绍 1&#xff09;作用&#xff1a;用中断系统实现了外设数据的输入输出&#xff1b; 还可以用于程序调试&…

第二篇 Entity Framework Plus 之 Query Future

从性能的角度出发&#xff0c;能够减少 增&#xff0c;删&#xff0c;改&#xff0c;查&#xff0c;跟数据库打交道次数&#xff0c;肯定是对性能会有所提升的&#xff08;这里单纯是数据库部分&#xff09;。 今天主要怎样减少Entity Framework查询跟数据库打交道的次数&#…