原稿地址,前端不敢问津的一边

前端不敢问津的一头–前端冷知识汇总

2015/09/08 · CSS,
HTML5,
JavaScript · 13
评论 ·
冷知识

本文小编: 伯乐在线 –
刘哇勇
。未经小编许可,禁止转发!
欢迎参预伯乐在线 专辑撰稿人。

前端已经被愚弄坏了!像console.log()能够向控制台出口图片等炫酷的钱物已经不是怎么讯息了,像用||操作符给变量赋专擅认同值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,须臾间又GET了很多前端技能,一些属于技术,一些则是千奇百怪的冷知识,一时间还消化但是来。现分类整理出来分享给大家,也补充了一些寻常的积聚和伸张了部分内容。

前者已经被调戏坏了!像console.log()可以向决定台出口图片等炫酷的钱物已经不是如何信息了,像用||操作符给变量赋暗中认同值也是人尽皆知的旧闻了,明天收看Quora上一个帖子,刹那间又GET了过多前端技能,一些属于技术,一些则是怪异的冷知识,一时间还消化不回复。现分类整理出来分享给大家,也填补了部分平时的积淀和扩充了部分内容。

前者已经被愚弄坏了!像console.log()可以向决定台出口图片等炫酷的玩意已经不是怎么着音讯了,像用||操作符给变量赋暗中同意值也是人尽皆知的旧闻了,今天看看Quora上一个帖子,须臾间又GET了无数前端技能,一些属于技术,一些则是稀奇的冷知识,一时间还消化不东山再起。现分类整理出来分享给大家,也填补了有的日常的积淀和扩充了一部分内容。

前端已经被讥笑坏了!像console.log()可以向控制台出口图片等炫酷的钱物已经不是怎么新闻了,像用||操作符给变量赋暗中认可值也是人尽皆知的旧闻了,明日见到Quora上一个帖子,须臾间又GET了不少前端技能,一些属于技术,一些则是怪异的冷知识,一时间还消化不回复。现分类整理出来分享给大家,也填补了部分平时的聚积和扩充了部分内容。

HTML篇

HTML篇

HTML篇

HTML篇

浏览器地址栏运行JavaScript代码

其一很几人相应依旧清楚的,在浏览器地址栏可以一直运行JavaScript代码,做法是以
javascript: 发轫后跟要举办的口舌。比如:

JavaScript

javascript:alert(‘hello from address bar :)’);

1
javascript:alert(‘hello from address bar :)’);

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

亟待留意的是一旦是透过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开首的javascript:,所以须求手动添加起来才能正确履行,而Firefox中尽管不会活动去掉,但它根本就不支持在地点栏运行JS代码,sigh~

这一技能在本人的另一篇博文《让Chrome
接管邮件连接,收发邮件更便宜了》中有采纳到,利用在浏览器地址栏中履行JavaScript代码将Gmail设置为系统的邮件接管程序。

浏览器地址栏运行JavaScript代码

浏览器地址栏运行JavaScript代码

浏览器地址栏运行JavaScript代码
这些很多少人应该仍旧驾驭的,在浏览器地址栏可以一贯运行JavaScript代码,做法是以javascript:初叶后跟要实施的语句。比如:

浏览器地址栏运行HTML代码

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

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

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

1
data:text/html,<h1>Hello, world!</h1>

美高梅开户网址 1

以此很两人相应照旧清楚的,在浏览器地址栏可以平昔运行JavaScript代码,做法是以
javascript: 初步后跟要实施的讲话。比如:

那一个很几人应该依然知道的,在浏览器地址栏可以一直运行JavaScript代码,做法是以
javascript: 开端后跟要实践的说话。比如:

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

您造么,可以把浏览器当编辑器

只怕浏览器地址栏上做作品,将以下代码贴到地址栏运行后浏览器变成了一个本来而简易的编辑器,与Windows自带的notepad一样,吼吼。

data:text/html, <html contenteditable>

1
data:text/html, <html contenteditable>

美高梅开户网址 2

总归多亏了HTML5中新加的 contenteditable 属性,当成分指定了该属性后,成分的始末成为可编制状态。

扩充,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

JavaScript

document.body.contentEditable=’true’;

1
document.body.contentEditable=’true’;

美高梅开户网址 3

javascript:alert(‘hello from address bar :)’);

javascript:alert(‘hello from address bar :)’);

将以上代码贴到浏览器地址栏回车后alert正常执行,一个弹窗神现。
急需专注的是只假诺因而copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以要求手动添加起来才能正确实施,而Firefox中固然不会自动去掉,但它根本就不帮忙在地方栏运行JS代码,sigh~

利用a标签自动解析URL

众多时候大家有从一个URL中领取域名,查询关键字,变量参数值等的急需,而相对没悟出可以让浏览器方便地帮我们已毕这一义务而不用大家写正则去抓取。方法就在JS代码里先创建一个
a 标签然后将急需分析的URL赋值给
a 的 href 属性,然后就赢得了整套大家想要的了。

JavaScript

var a = document.createElement(‘a’); a.href =
”; console.log(a.host);

1
2
3
var a = document.createElement(‘a’);
a.href = ‘http://www.cnblogs.com/wayou/p/’;
console.log(a.host);

美高梅开户网址 4

选择这一原理,稍微伸张一下,就得到了一个进一步健康的解析URL各部分的通用方法了。上面代码来自James的博客。

JavaScript

function parseURL(url) { var a = document.createElement(‘a’); a.href =
url; return { source: url, protocol: a.protocol.replace(‘:’,”), host:
a.hostname, port: a.port, query: a.search, params: (function(){ var ret
= {}, seg = a.search.replace(/^\?/,”).split(‘&’), len = seg.length, i
= 0, s; for (;i<len;i++) { if (!seg[i]) { continue; } s =
seg[i].split(‘=’); ret[s[0]] = s[1]; } return ret; })(), file:
(a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1], hash:
a.hash.replace(‘#’,”), path: a.pathname.replace(/^([^\/])/,’/$1′),
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,”])[1],
segments: a.pathname.replace(/^\//,”).split(‘/’) }; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function parseURL(url) {
    var a =  document.createElement(‘a’);
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(‘:’,”),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,”).split(‘&’),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split(‘=’);
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1],
        hash: a.hash.replace(‘#’,”),
        path: a.pathname.replace(/^([^\/])/,’/$1′),
        relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,”])[1],
        segments: a.pathname.replace(/^\//,”).split(‘/’)
    };
}

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

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

浏览器地址栏运行HTML代码

页面拥有ID的因素会创设全局变量

在一张HTML页面中,所有安装了ID属性的成分会在JavaScript的实施环境中创制对应的全局变量,那意味
document.getElementById 像人的阑尾一样显得多余了。但事实上项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的空子要小得多。

<div id=”sample”></div> <script
type=”text/javascript”> console.log(sample); </script>

1
2
3
4
<div id="sample"></div>
<script type="text/javascript">
        console.log(sample);
</script>

美高梅开户网址 5

亟待小心的是一旦是透过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开头的javascript:,所以要求手动添加起来才能科学实施,而Firefox中固然不会自动去掉,但它根本就不支持在地点栏运行JS代码,sigh~
这一技艺在自身的另一篇博文《让Chrome
接管邮件连接,收发邮件更有益于了》中有应用到,利用在浏览器地址栏中实施JavaScript代码将Gmail设置为系统的邮件接管程序。

需求注意的是假设是通过copy
paste代码到浏览器地址栏的话,IE及Chrome会自动去掉代码开始的javascript:,所以要求手动添加起来才能正确实施,而Firefox中就算不会自行去掉,但它根本就不扶助在地方栏运行JS代码,sigh~

若是说上边那条小秘密接头的人还算多以来,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以一贯运行HTML代码!
比如说在地方栏输入以下代码然后回车运行,会师世指定的页面内容。
data:text/html,<h1>Hello, world!</h1>

加载CDN文件时,可以省去HTTP标识

今日很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全考虑部分CDN服务器使用HTTPS格局连接,而许多古板的HTTP,其实大家在应用时能够忽略掉那么些,将它从URL中节省。

<script src=”//domain.com/path/to/script.js”></script>

1
<script src="//domain.com/path/to/script.js"></script>

这点在以前一篇译文博客《jQuery编程最佳实践》中也有提到。

浏览器地址栏运行HTML代码

这一技巧在本身的另一篇博文《让Chrome
接管邮件连接,收发邮件更便宜了》中有采纳到,利用在浏览器地址栏中履行JavaScript代码将Gmail设置为系统的邮件接管程序。

美高梅开户网址 6

选择script标签保存任意新闻

将script标签设置为 type=’text’ 然后得以在其间保存任意音信,之后可以在JavaScript代码中很便利地赢得。

 

<script type=”text” id=”template”> <h1>This won’t
display</h1> </script>

1
2
3
<script type="text" id="template">
<h1>This won’t display</h1>
</script>

JavaScript

var text = document.getElementById(‘template’).innerHTML

1
var text = document.getElementById(‘template’).innerHTML

纵然说下边那条小秘密接头的人还算多以来,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏能够直接运行HTML代码!

浏览器地址栏运行HTML代码

您造么,可以把浏览器当编辑器

CSS篇

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

假若说上边那条小秘密接头的人还算多以来,那条秘笈知道的人就要少一些了,在非IE内核的浏览器地址栏可以平昔运行HTML代码!

抑或浏览器地址栏上做小说,将以下代码贴到地址栏运行后浏览器变成了一个土生土长而精炼的编辑器,与Windows自带的notepad一样,吼吼。

至于CSS的恶作剧

相信您看完以下代码后可以预料到会现身什么功效。

CSS

*{ cursor: none!important; }

1
2
3
*{
    cursor: none!important;
}

美高梅开户网址 7

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

诸如在地方栏输入以下代码然后回车运行,会油但是生指定的页面内容。

data:text/html, <html contenteditable>

大概的文字模糊效果

以下两行简单的CSS3代码可落成将文字模糊化处理的目标,出来的作用有点像使用PS的滤镜,so
cool!

CSS

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

1
2
3
4
p {
    color: transparent;
    text-shadow: #111 0 0 5px;
}

美高梅开户网址 8

你造么,可以把浏览器当编辑器

data:text/html,

美高梅开户网址 9

笔直居中

有好数十次博主都有如此的需求,垂直居中显得某个DIV,我们领略CSS中原始有档次居中的样式
text-align:center 。唯独这一个垂直居中无解。

当然你可以将容器设置为 display:table ,然后将子成分约等于要笔直居中显得的要素设置为
display:table-cell ,然后加上来贯彻,但此种已毕很多次会因为
display:table 而损坏全部布局,那还不如直接用table标签了呢。

上面那几个样式利用了translate来都行已毕了僵直居中样式,需IE9+。

CSS

.center-vertical { position: relative; top: 50%; transform:
translateY(-50%); }

1
2
3
4
5
.center-vertical {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}

相比较而言,水平居中要简单得多,像上边提到的text-align:center,经常选择的技艺还有
margin:0 auto 。但对于margin大法也只在子成分宽度小于容器宽度时管用,当子成分宽度大于容器宽度时此法失效。

一成不变,利用left和transform同样可达成程度居中,不过意义不大,终究text-align和margin几乎满足须求了。

CSS

.center-horizontal { position: relative; left: 50%; transform:
translateX(-50%); }

1
2
3
4
5
.center-horizontal {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}

 

要么浏览器地址栏上做小说,将以下代码贴到地址栏运行后浏览器变成了一个本来而简约的编辑器,与Windows自带的notepad一样,吼吼。

Hello,world!

美高梅开户网址 10

您造么,可以把浏览器当编辑器

依旧浏览器地址栏上做小说,将以下代码贴到地址栏运行后浏览器变成了一个原本而不难的编辑器,与Windows自带的notepad一样,吼吼。

data:text/html,

美高梅开户网址 11

毕竟多亏了HTML5中新加的 contenteditable
属性,当成分指定了该属性后,成分的情节成为可编制状态。

伸张,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

document.body.contentEditable=’true’;

美高梅开户网址 12

运用a标签自动解析URL

过多时候我们有从一个URL中提取域名,查询关键字,变量参数值等的内需,而相对没悟出可以让浏览器方便地帮大家成功这一义务而不用大家写正则去抓取。方法就在JS代码里先创立一个
a 标签然后将必要分析的URL赋值给 a 的 href
属性,然后就赢得了全套大家想要的了。

vara=document.createElement(‘a’);

a.href=”;

console.log(a.host);

美高梅开户网址 13

运用这一规律,稍微增加一下,就得到了一个更是健全的解析URL各部分的通用方法了。下边代码来自James的博客。

functionparseURL(url){

vara=document.createElement(‘a’);

a.href=url;

return{

source:url,

protocol:a.protocol.replace(‘:’,”),

host:a.hostname,

port:a.port,

query:a.search,

params:(function(){

varret={},

seg=a.search.replace(/^\原稿地址,前端不敢问津的一边。?/,”).split(‘&’),

len=seg.length,i=0,s;

for(;i

if(!seg[i]){continue;}

s=seg[i].split(‘=’);

ret[s[0]]=s[1];

}

returnret;

})(),

file:(a.pathname.match(/\/([^\/?#]+)$/i)||[,”])[1],

hash:a.hash.replace(‘#’,”),

path:a.pathname.replace(/^([^\/])/,’/$1′),

relative:(a.href.match(/tps?:\/\/[^\/]+(.+)/)||[,”])[1],

segments:a.pathname.replace(/^\//,”).split(‘/’)

};

}

页面拥有ID的成分会成立全局变量

在一张HTML页面中,所有安装了ID属性的要素会在JavaScript的实施环境中创制对应的全局变量,那意味
document.getElementById
像人的阑尾一样显得多余了。但实则项目中最好规矩该怎么写就怎么写,终归常规代码出乱子的空子要小得多。

console.log(sample);

美高梅开户网址 14

加载CDN文件时,可以节省HTTP标识

现行很流行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS格局连接,而过多古板的HTTP,其实大家在动用时方可忽略掉那一个,将它从URL中节约。

那一点在以前一篇译文博客《jQuery编程最佳实践》中也有涉及。

行使script标签保存任意新闻

将script标签设置为 type=’text’
然后得以在里头保存任意音讯,之后可以在JavaScript代码中很便利地赢得。

说到底多亏了HTML5中新加的contenteditable属性,当成分指定了该属性后,成分的情节成为可编制状态。
恢宏,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

多重边框

采纳再一次指定box-shadow来完毕多个边框的效劳

在线演示

CSS

/*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 }

1
2
3
4
5
6
7
/*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
}

美高梅开户网址 15

data:text/html, <html contenteditable>

Thiswon’tdisplay

vartext=document.getElementById(‘template’).innerHTML

CSS篇

关于CSS的揶揄

信任你看完以下代码后可以预料到会出现什么效益。

*{

cursor:none!important;

}

美高梅开户网址 16

不难易行的文字模糊效果

以下两行不难的CSS3代码可高达将文字模糊化处理的目标,出来的作用有点像使用PS的滤镜,so
cool!

p{

color:transparent;

text-shadow:#111005px;

}

美高梅开户网址 17

垂直居中

有好多次博主都有这么的必要,垂直居中显示某个DIV,大家了然CSS中自然有档次居中的样式
text-align:center 。唯独那么些垂直居中无解。

理所当然你可以将容器设置为 display:table
,然后将子成分相当于要笔直居中体现的成分设置为 display:table-cell
,然后加上来兑现,但此种完结多次会因为 display:table
而损坏全部布局,那还不如直接用table标签了呢。

下边那个样式利用了translate来都行完成了僵直居中样式,需IE9+。

.center-vertical{

position:relative;

top:50%;

transform:translateY(-50%);

}

相比较而言,水平居中要简单得多,像上边提到的text-align:center,平时采纳的技艺还有
margin:0 auto
。但对于margin大法也只在子成分宽度小于容器宽度时管用,当子元素宽度当先容器宽度时此法失效。

依样画葫芦,利用left和transform同样可完结程度居中,但是意义不大,终归text-align和margin差不离满足急需了。

.center-horizontal{

position:relative;

left:50%;

transform:translateX(-50%);

}

多重边框

行使再度指定box-shadow来完成五个边框的法力

在线演示:

/*CSS Border with Box-Shadow Example*/

div{

box-shadow:0006pxrgba(0,0,0,0.2),00012pxrgba(0,0,0,0.2),00018pxrgba(0,0,0,0.2),00024pxrgba(0,0,0,0.2);

height:200px;

margin:50pxauto;

width:400px

}

美高梅开户网址 18

实时编辑CSS

通过设置style标签的 display:block
样式可以让页面的style标签突显出来,并且增加 contentEditable
属性后得以让体制成为可编制状态,更改后的体制效果也是实时更新显示的。此技能在IE下无效。拥有此技能者,逆天也!

body{color:blue}

美高梅开户网址 19

创立长宽比固定的要素

由此设置父级窗口的 padding-bottom
可以达标让容器保持自然的长短比的目标,那在响应式页面设计中相比较有用,可以保持成分不变形。

thiscontentwillhaveaconstantaspectratiothatvariesbasedonthewidth.

美高梅开户网址 20

CSS中也足以做简单运算

由此CSS中的calc方法可以举行部分简单的运算,从而达成动态指定成分样式的目标。

.container{

background-position:calc(100%-50px)calc(100%-20px);

}

JavaScript篇

浮动随机字符串

选取 Math.random 和 toString
生成自由字符串,来自前一阵子看到的一篇博文。那里的技能是利用了 toString
方法可以接收一个基数作为参数的法则,那些基数从2到36封顶。即使不指定,暗许基数是10进制。略屌!

functiongenerateRandomAlphaNum(len){

varrdmString=””;

for(;rdmString.length

returnrdmString.substr(0,len);

}

美高梅开户网址 21

平头的操作

JavaScript中是未曾整型概念的,但拔取好位操作符可以轻松处理,同时获取成效上的升官。

|0 和 ~~
是很好的一个例证,使用那五头可以将浮点转成整型且成效方面要比同类的
parseInt , Math.round
要快。在拍卖像素及动画位移等成效的时候会很有用。质量比较见此。

varfoo=(12.4/4.13)|0;//结果为3

varbar=~~(12.4/4.13);//结果为3

附带说句, !! 将一个值方便高效转化为布尔值 !!window===true 。

重写原生浏览器方法以落实新效能

下载的代码通过重写浏览器的 alert 让它可以记录弹窗的次数。

(function(){

varoldAlert=window.alert,

count=0;

window.alert=function(a){

count++;

oldAlert(a+”\n You’ve called alert “+count+” times now. Stop, it’s
evil!”);

};

})();

alert(“Hello World”);

有关console的嘲讽

关于重写原生方法,那里有个恶作剧大家可以拿去寻安心乐意。Chrome的 console.log
是永葆对文字添加样式的,甚至log图片都可以。于是可以重写掉专擅承认的log方法,把将要log的文字应用到CSS的歪曲效果,那样当有人试图调用console.log()的时候,出来的是张冠李戴不清的文字。好冷,我表示并未笑。

是从那篇G+帖子的褒贬里见到的。使用之后的功能是重复调用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);’);

};

美高梅开户网址 22

不注明第五个变量的值交流

我们都了然沟通八个变量值的正常做法,那就是声称一个中档变量来暂存。但鲜有人去挑衅不声明中间变量的景色,上面的代码给出了那种完结。蛮有创意
的。

vara=1,b=2;a=[b,b=a][0];

万物皆对象

在JavaScript的世界,万物皆对象。除了 null 和 undefined
,其余大旨项目数字,字符串和布尔值都有对相应包装对象。对象的一个特色是您可以在它身上一直调用方法。对于数字为主项目,当试图在其随身调用
toString
方法会败北,但用括号括起来后再调用就不会破产了,内部贯彻是用相应的卷入对象将基本项目转为对象。所以
(1).toString() 也就是 new Number(1).toString()
。因而,你确实可以把中央类型数字,字符串,布尔等当目的使用的,只是专注语法要适当。

并且大家注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如你看看的1方可写成1.,那相当于怎么当你打算1.toString()时会报错,所以正确的写法应该是这么:1..toString(),可能如上边所述加上括号,那里括号的功用是改良JS解析器,不要把1末尾的点当成小数点。内部贯彻如上面所述,是将1.用包装对象转成对象再调用方法。

If语句的变形

当您须求写一个if语句的时候,不妨尝试另一种更便利的不二法门,用JavaScript中的逻辑操作符来顶替。

varday=(newDate).getDay()===0;

//传统if语句

if(day){

alert(‘Today is Sunday!’);

};

//运用逻辑与代表if

day&&alert(‘Today is Sunday!’);

例如上面的代码,首先取得前天的日子,假设是周末,则弹窗,否则怎么也不做。大家明白逻辑操作存在鸿沟的事态,对于逻辑与表明式,唯有两岸都真才结果才为真,就算面前的day变量被判定为假了,那么对于所有与表明式来说结果就是假,所以就不会一连去实施后边的
alert
了,假使面前day为真,则还要继续执行后边的代码来确定整个表明式的真伪。利用那点达到了if的功用。

对此古板的if语句,要是履行体代码超越了1
条语句,则必要加花括号,而接纳逗号表明式,可以举行任意条代码而不用加花括号。

if(conditoin)alert(1),alert(2),console.log(3);

地点if语句中,借使条件建立则执行多少个操作,但大家不须求用花括号将那三句代码括起来。当然,那是不推荐的,那里是冷知识课堂:)

禁止旁人以iframe加载你的页面

上边的代码已经不言自明了,没什么好多说的。

if(window.location!=window.parent.location)window.parent.location=window.location;

console.table

Chrome专属,IE绕道的 console
方法。可以将JavaScript关联数组以表格方式出口到浏览器 console
,效果很惊赞,界面很美丽。

//采购景况

vardata=[{‘品名’:’杜雷斯’,’数量’:4},{‘品名’:’冈本’,’数量’:3}];

console.table(data);

美高梅开户网址 23

REFERENCE

What are the most interesting HTML/JS/DOM/CSS hacks that most web
developers don’t know about?

45 Useful JavaScript Tips, Tricks and Best Practices

10 Small Things You May Not Know About Javascript

document.body.contentEditable='true';

实时编辑CSS

透过安装style标签的 display:block 样式可以让页面的style标签突显出来,并且增加contentEditable 属性后得以让体制成为可编制状态,更改后的体制效果也是实时更新显示的。此技术在IE下无效。拥有此技能者,逆天也!

<!DOCTYPE html> <html> <body> <style
style=”display:block” contentEditable> body { color: blue }
</style> </body> </html>

1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
    <body>
        <style style="display:block" contentEditable>
         body { color: blue }
        </style>
    </body>
</html>

美高梅开户网址 24

百川归海多亏了HTML5中新加的 contenteditable
属性,当成分指定了该属性后,成分的内容成为可编制状态。

美高梅开户网址 25

开创长宽比固定的因素

透过安装父级窗口的 padding-bottom 可以达标让容器保持一定的尺寸比的目的,那在响应式页面设计中比较有用,可以保持成分不变形。

<div style=”width: 100%; position: relative; padding-bottom:
20%;”> <div style=”position: absolute; left: 0; top: 0; right: 0;
bottom: 0;background-color:yellow;”> this content will have a
constant aspect ratio that varies based on the width. </div>
</div>

1
2
3
4
5
<div style="width: 100%; position: relative; padding-bottom: 20%;">
    <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;">
        this content will have a constant aspect ratio that varies based on the width.
    </div>
</div>

美高梅开户网址 26

扩张,将以下代码放到console执行后,整个页面将变得可编制,随意践踏吧~

选用a标签自动解析URL
洋洋时候大家有从一个URL中领取域名,查询关键字,变量参数值等的急需,而相对没悟出能够让浏览器方便地帮我们做到这一义务而不用我们写正则去抓取。方法就在JS代码里先创设一个a标签然后将索要分析的URL赋值给a的href属性,然后就赢得了任何大家想要的了。

CSS中也足以做简单运算

通过CSS中的calc方法可以开展部分简易的演算,从而已毕动态指定成分样式的目标。

CSS

.container{ background-position: calc(100% – 50px) calc(100% – 20px); }

1
2
3
.container{
background-position: calc(100% – 50px) calc(100% – 20px);
}

 

document.body.contentEditable=’true’;

var a = document.createElement('a'); a.href = 'http://www.cnblogs.com/wayou/p/'; console.log(a.host);

JavaScript篇

使用a标签自动解析URL

美高梅开户网址 27

转变随机字符串

拔取 Math.random 和 toString 生成自由字符串,来自前一阵子看到的一篇博文。那里的技艺是使用了
toString 方法可以接过一个基数作为参数的规律,那个基数从2到36封顶。如若不点名,暗许基数是10进制。略屌!

JavaScript

function generateRandomAlphaNum(len) { var rdmString = “”; for (;
rdmString.length < len; rdmString +=
Math.random().toString(36).substr(2)); return rdmString.substr(0, len);
}

1
2
3
4
5
function generateRandomAlphaNum(len) {
    var rdmString = "";
    for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
    return rdmString.substr(0, len);
}

美高梅开户网址 28

多如牛毛时候大家有从一个URL中提取域名,查询关键字,变量参数值等的内需,而相对没悟出可以让浏览器方便地帮大家成功这一职分而不用我们写正则去抓取。方法就在JS代码里先创立一个
a 标签然后将要求分析的URL赋值给 a 的 href
属性,然后就取得了全套大家想要的了。

利用这一规律,稍微扩张一下,就收获了一个进一步健全的解析URL各部分的通用方法了。上边代码来自James的博客。

平头的操作

JavaScript中是未曾整型概念的,但接纳好位操作符可以轻松处理,同时获得效能上的升级换代。

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

JavaScript

var foo = (12.4 / 4.13) | 0;//结果为3 var bar = ~~(12.4 /
4.13);//结果为3

1
2
var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3

附带说句, !! 将一个值方便快速转化为布尔值
!!window===true  。

var a = document.createElement(‘a’);
a.href = ”;
console.log(a.host);

function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol: a.protocol.replace(':',''), host: a.hostname, port: a.port, query: a.search, params: (function(){ var ret = {}, seg = a.search.replace(/^\?/,'').split('&'), len = seg.length, i = 0, s; for (;i<len;i++) { if (!seg[i]) { continue; } s = seg[i].split('='); ret[s[0]] = s[1]; } return ret; })(), file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1], hash: a.hash.replace('#',''), path: a.pathname.replace(/^([^\/])/,'/$1'), relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1], segments: a.pathname.replace(/^\//,'').split('/') };}

重写原生浏览器方法以贯彻新效用

下载的代码通过重写浏览器的 alert 让它可以记录弹窗的次数。

JavaScript

(function() { var oldAlert = window.alert, count = 0; window.alert =
function(a) { count++; oldAlert(a + “\n You’ve called alert ” + count +
” times now. Stop, it’s evil!”); }; })(); alert(“Hello World”);

1
2
3
4
5
6
7
8
9
(function() {
    var oldAlert = window.alert,
        count = 0;
    window.alert = function(a) {
        count++;
        oldAlert(a + "\n You’ve called alert " + count + " times now. Stop, it’s evil!");
    };
})();
alert("Hello World");

 

采纳这一法则,稍微扩张一下,就拿走了一个一发健康的解析URL各部分的通用方法了。下边代码来自James的博客。

页面拥有ID的要素会创制全局变量

关于console的恶作剧

有关重写原生方法,那里有个恶作剧大家可以拿去寻心情舒畅。Chrome的 console.log 是辅助对文字添加样式的,甚至log图片都得以。于是可以重写掉默许的log方法,把将要log的文字应用到CSS的混淆效果,那样当有人准备调用console.log()的时候,出来的是模糊不清的文字。好冷,我代表尚未笑。

是从这篇G+帖子的评说里看看的。使用未来的功能是再一次调用log会输出字迹模糊不清的文字。

JavaScript

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);’); };

1
2
3
4
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);’);
};

美高梅开户网址 29

function parseURL(url) {
var a =  document.createElement(‘a’);
a.href = url;
return {
     source: url,
     protocol: a.protocol.replace(‘:’,”),
     host: a.hostname,
     port: a.port,
     query: a.search,
     params: (function(){
         var ret = {},
           seg = a.search.replace(/^\?/,”).split(‘&’),
           len = seg.length, i = 0, s;
         for (;i<len;i++) {
             if (!seg[i]) { continue; }
             s = seg[i].split(‘=’);
             ret[s[0]] = s[1];
         }
         return ret;
     })(),
     file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,”])[1],
     hash: a.hash.replace(‘#’,”),
     path: a.pathname.replace(/^([^\/])/,’/$1′),
     relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) ||
[,”])[1],
     segments: a.pathname.replace(/^\//,”).split(‘/’)
};
}

在一张HTML页面中,所有安装了ID属性的因素会在JavaScript的履行环境中创设对应的全局变量,那意味着document.getElementById像人的阑尾一样显得多余了。但实则项目中最好规矩该怎么写就怎么写,毕竟常规代码出乱子的机遇要小得多。
<div id=”sample”></div><script type=”text/javascript”>
console.log(sample);</script>

不注解第多个变量的值调换

俺们都晓得交流两个变量值的常规做法,那就是宣称一个中路变量来暂存。但鲜有人去搦战不表明中间变量的地方,下边的代码给出了那种完结。蛮有新意
的。

JavaScript

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

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

美高梅开户网址 30

页面拥有ID的因素会创立全局变量

美高梅开户网址 31

万物皆对象

在JavaScript的社会风气,万物皆对象。除了 null 和 undefined ,其余宗旨类型数字,字符串和布尔值都有对应当包装对象。对象的一个性格是您可以在它身上一向调用方法。对于数字为主类型,当试图在其身上调用
toString 方法会战败,但用括号括起来后再调用就不会战败了,内部贯彻是用相应的卷入对象将核心类型转为对象。所以
(1).toString() 相当于 new Number(1).toString() 。由此,你实在可以把基本项目数字,字符串,布尔等当对象使用的,只是小心语法要适合。

再者我们注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如你看来的1足以写成1.,那约等于为何当你打算1.toString()时会报错,所以正确的写法应该是这么:1..toString(),或然如上边所述加上括号,那里括号的机能是校订JS解析器,不要把1后边的点当成小数点。内部贯彻如上面所述,是将1.用包装对象转成对象再调用方法。

在一张HTML页面中,所有安装了ID属性的成分会在JavaScript的实施环境中创制对应的全局变量,那意味
document.getElementById
像人的阑尾一样显得多余了。但实际项目中最好规矩该怎么写就怎么写,终究常规代码出乱子的空子要小得多。

加载CDN文件时,可以节约HTTP标识

If语句的变形

当您须要写一个if语句的时候,不妨尝试另一种更简便的方法,用JavaScript中的逻辑操作符来顶替。

JavaScript

var day=(new Date).getDay()===0; //传统if语句 if (day) { alert(‘Today is
Sunday!’); }; //运用逻辑与代表if day&&alert(‘Today is Sunday!’);

1
2
3
4
5
6
7
var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert(‘Today is Sunday!’);
};
//运用逻辑与代替if
day&&alert(‘Today is Sunday!’);

诸如下面的代码,首先得到今天的日期,若是是周末,则弹窗,否则如何也不做。我们了然逻辑操作存在隔阂的事态,对于逻辑与表明式,唯有两岸都真才结果才为真,借使前方的day变量被判定为假了,那么对于任何与表明式来说结果就是假,所以就不会持续去履行前面的
alert 了,如若前方day为真,则还要继续执行后边的代码来确定整个表明式的真伪。利用那一点达到了if的机能。

对于价值观的if语句,如若举办体代码超越了1
条语句,则要求加花括号,而选拔逗号表明式,可以实施任意条代码而不用加花括号。

JavaScript

if(conditoin) alert(1),alert(2),console.log(3);

1
if(conditoin) alert(1),alert(2),console.log(3);

上边if语句中,固然基准建立则举行多个操作,但我们不须求用花括号将那三句代码括起来。当然,那是不引进的,那里是冷知识课堂:)

<div id=”sample”></div>
<script type=”text/javascript”>
console.log(sample);
</script>

未来很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全考虑部分CDN服务器使用HTTPS方式连接,而许多传统的HTTP,其实咱们在应用时得以忽略掉这一个,将它从URL中节省。(web前端学习互换群:328058344
禁止闲谈,非喜勿进!)

取缔别人以iframe加载你的页面

下边的代码已经不言自明了,没什么好多说的。

JavaScript

if (window.location != window.parent.location) window.parent.location =
window.location;

1
if (window.location != window.parent.location) window.parent.location = window.location;

加载CDN文件时,可以节省HTTP标识

<script src="//domain.com/path/to/script.js"></script>

console.table

Chrome专属,IE绕道的 console 方法。可以将JavaScript关联数组以表格方式出口到浏览器
console ,效果很惊赞,界面很美妙。

JavaScript

//采购情形 var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’,
‘数量’: 3}]; console.table(data);

1
2
3
//采购情况
var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’, ‘数量’: 3}];
console.table(data);

美高梅开户网址 32

今昔很盛行的CDN即从专门的服务器加载一些通用的JS和CSS文件,出于安全着想部分CDN服务器使用HTTPS方式连接,而许多古板的HTTP,其实大家在利用时可以忽略掉那么些,将它从URL中节省。

动用script标签保存任意新闻

REFERENCE

  • What are the most interesting HTML/JS/DOM/CSS hacks that most web
    developers don’t know
    about?
  • 45 Useful JavaScript Tips, Tricks and Best
    Practices
  • 10 Small Things You May Not Know About
    Javascript

    6 赞 43 收藏 13
    评论

<script src=”//domain.com/path/to/script.js”></script>

将script标签设置为type=’text’然后可以在里头保存任意音信,之后可以在JavaScript代码中很有益于地收获。

有关笔者:刘哇勇

美高梅开户网址 33

放浪不急爱自由
个人主页 ·
我的稿子 ·
17 ·
  

美高梅开户网址 34

那点在以前一篇译文博客《jQuery编程最佳实践》中也有涉及。

<script type="text" id="template"> <h1>This won't display</h1></script>

var text = document.getElementById('template').innerHTML

动用script标签保存任意新闻

CSS篇

将script标签设置为 type=’text’
然后方可在里面保存任意新闻,之后方可在JavaScript代码中很便宜地获取。

关于CSS的恶作剧
相信您看完以下代码后能够预料到会现身哪些意义。
*{ cursor: none!important;}

<script type=”text” id=”template”>
<h1>This won’t display</h1>
</script>

美高梅开户网址 35

var text = document.getElementById(‘template’).innerHTML

简短的文字模糊效果

CSS篇

以下两行不难的CSS3代码可达到将文字模糊化处理的目标,出来的效果有点像使用PS的滤镜,so
cool!
p { color: transparent; text-shadow: #111 0 0 5px;}

至于CSS的戏弄

美高梅开户网址 36

深信不疑你看完以下代码后可以预料到会出现什么样意义。

垂直居中

*{
cursor: none!important;
}

有好数十次博主都有这么的要求,垂直居中显得某个DIV,大家知晓CSS中原始有程度居中的样式text-align:center。唯独那个垂直居中无解。
理所当然你可以将容器设置为display:table,然后将子元素也等于要笔直居中显得的要素设置为display:table-cell,然后加上vertical-align:middle来兑现,但此种完成多次会因为display:table而破坏全体布局,那还不如直接用table标签了呢。
上边那一个样式利用了translate来都行落成了僵直居中样式,需IE9+。

大约的文字模糊效果

.center-vertical { position: relative; top: 50%; transform: translateY(-50%);}

以下两行简单的CSS3代码可高达将文字模糊化处理的目标,出来的效应有点像使用PS的滤镜,so
cool!

相比较而言,水平居中要简明得多,像上边提到的text-align:center,日常应用的技能还有margin:0
auto。但对此margin大法也只在子成分宽度小于容器宽度时管用,当子成分宽度大于容器宽度时此法失效。
上行下效,利用left和transform同样可完结程度居中,不过意义不大,终归text-align和margin差不离满意急需了。

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

.center-horizontal { position: relative; left: 50%; transform: translateX(-50%); }

垂直居中

多重边框

有好多次博主都有这般的急需,垂直居中突显某个DIV,大家清楚CSS中自然有程度居中的样式
text-align:center 。唯独那一个垂直居中无解。

运用再一次指定box-shadow来已毕多少个边框的功用
在线演示

本来你可以将容器设置为 display:table
,然后将子成分约等于要笔直居中显示的因素设置为 display:table-cell
,然后加上来落到实处,但此种完毕数十次会因为 display:table
而损坏全体布局,那还不如直接用table标签了吗。

/*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}

下边那么些样式利用了translate来都行完结了垂直居中样式,需IE9+。

美高梅开户网址 37

.center-vertical {
position: relative;
top: 50%;
transform: translateY(-50%);
}

实时编辑CSS

相比较而言,水平居中要简单得多,像上边提到的text-align:center,常常拔取的技艺还有
margin:0 auto
。但对于margin大法也只在子成分宽度小于容器宽度时管用,当子成分宽度大于容器宽度时此法失效。

透过设置style标签的display:block样式可以让页面的style标签展现出来,并且增加contentEditable属性后得以让体制成为可编制状态,更改后的体制效果也是实时更新突显的。此技能在IE下无效。拥有此技能者,逆天也!

萧规曹随,利用left和transform同样可完毕程度居中,然则意义不大,终究text-align和margin大致满足须要了。

<!DOCTYPE html><html> <body> <style style="display:block" contentEditable> body { color: blue } </style> </body></html>

.center-horizontal {
position: relative;
left: 50%;
transform: translateX(-50%);
}

美高梅开户网址 38

多重边框

创造长宽比固定的要素

利用再次指定box-shadow来完结多少个边框的作用

透过安装父级窗口的padding-bottom可以达到让容器保持一定的长短比的目的,那在响应式页面设计中比较有用,可以保持成分不变形。

在线演示:

<div style="width: 100%; position: relative; padding-bottom: 20%;"> <div style="position: absolute; left: 0; top: 0; right: 0; bottom: 0;background-color:yellow;"> this content will have a constant aspect ratio that varies based on the width. </div></div>

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
}

美高梅开户网址 39

实时编辑CSS

CSS中也足以做简单运算

透过安装style标签的 display:block
样式可以让页面的style标签显示出来,并且拉长 contentEditable
属性后方可让体制成为可编制状态,更改后的体裁效果也是实时更新展现的。此技术在IE下无效。拥有此技能者,逆天也!

透过CSS中的calc方法可以拓展部分粗略的演算,从而达到动态指定元素样式的目标。
.container{ background-position: calc(100% - 50px) calc(100% - 20px);}

<!DOCTYPE html>
<html>
<body>
    <style style=”display:block” contentEditable>
      body { color: blue }
    </style>
</body>
</html>

JavaScript篇

始建长宽比固定的要素

变化随机字符串
利用Math.random和toString生成随机字符串,来自前一阵子看到的一篇博文。那里的技巧是使用了toString方法可以吸纳一个基数作为参数的法则,那个基数从2到36封顶。假如不指定,暗许基数是10进制。略屌!
function generateRandomAlphaNum(len) { var rdmString = ""; for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, len);}

经过设置父级窗口的 padding-bottom
可以高达让容器保持自然的尺寸比的目标,那在响应式页面设计中比较有用,可以保险成分不变形。

美高梅开户网址 40

<div style=”width: 100%; position: relative; padding-bottom:
20%;”>
<div style=”position: absolute; left: 0; top: 0; right: 0; bottom:
0;”>
     this content will have a constant aspect ratio that varies based on
the width.
</div>
</div>

平头的操作
JavaScript中是从未有过整型概念的,但利用好位操作符可以轻松处理,同时得到作用上的升级。
美高梅开户网址,|0和~~是很好的一个例子,使用这二者可以将浮点转成整型且功用方面要比同类的parseInt,Math.round
要快。在拍卖像素及动画位移等成效的时候会很有用。质量相比见此。

CSS中也可以做简单运算

var foo = (12.4 / 4.13) | 0;//结果为3var bar = ~~(12.4 / 4.13);//结果为3

透过CSS中的calc方法可以展开部分粗略的演算,从而已毕动态指定成分样式的指标。

顺手说句,!!将一个值方便高效转化为布尔值 !!window===true 。

.container{
background-position: calc(100% – 50px) calc(100% – 20px);
}

重写原生浏览器方法以落实新成效
下载的代码通过重写浏览器的alert让它可以记下弹窗的次数。

JavaScript篇

(function() { var oldAlert = window.alert, count = 0; window.alert = function(a) { count++; oldAlert(a + "\n You've called alert " + count + " times now. Stop, it's evil!"); };})();alert("Hello World");

转移随机字符串

至于console的调戏

运用 Math.random 和 toString
生成自由字符串,来自前一阵子看到的一篇博文。那里的技巧是接纳了 toString
方法可以收起一个基数作为参数的规律,那个基数从2到36封顶。倘诺不点名,默许基数是10进制。略屌!

至于重写原生方法,那里有个恶作剧大家可以拿去寻喜上眉梢。Chrome的console.log是扶助对文字添加样式的,甚至log图片都足以。于是可以重写掉暗中同意的log方法,把将要log的文字应用到CSS的混淆效果,那样当有人准备调用console.log()的时候,出来的是模糊不清的文字。好冷,我表示平素不笑。
是从这篇G+帖子的评介里看看的。使用之后的效益是再次调用log会输出字迹模糊不清的文字。(web前端学习调换群:328058344
禁止闲谈,非喜勿进!)

function generateRandomAlphaNum(len) {
var rdmString = “”;
for (; rdmString.length < len; rdmString +=
Math.random().toString(36).substr(2));
return rdmString.substr(0, len);
}

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);');};

平头的操作

美高梅开户网址 41

JavaScript中是从未整型概念的,但运用好位操作符可以轻松处理,同时取得效用上的升高。

不申明第多个变量的值交流
俺们都了解交流多少个变量值的常规做法,那就是宣称一个中路变量来暂存。但鲜有人去挑衅不申明中间变量的情事,上面的代码给出了那种完毕。蛮有新意
的。
var a=1,b=2;a=[b,b=a][0];

|0 和 ~~
是很好的一个例证,使用那两者可以将浮点转成整型且功用方面要比同类的
parseInt ,
Math.round  要快。在处理像素及动画位移等功能的时候会很有用。质量相比见此。

美高梅开户网址 42

var foo = (12.4 / 4.13) | 0;//结果为3
var bar = ~~(12.4 / 4.13);//结果为3

万物皆对象

附带说句, !! 将一个值方便高效转化为布尔值 !!window===true  。

在JavaScript的社会风气,万物皆对象。除了null和undefined,其他宗旨类型数字,字符串和布尔值都有对应当包装对象。对象的一个表征是您可以在它身上平素调用方法。对于数字为主项目,当试图在其身上调用toString方法会失利,但用括号括起来后再调用就不会破产了,内部贯彻是用相应的包裹对象将挑益州类型转为对象。所以(1).toString()约等于new
Number(1).toString()。由此,你实在可以把中央类型数字,字符串,布尔等当目标使用的,只是专注语法要适于。

重写原生浏览器方法以落到实处新职能

并且大家注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点简单了而以,比如您看看的1方可写成1.,那约等于为啥当你打算1.toString()时会报错,所以正确的写法应该是如此:1..toString(),恐怕如上面所述加上括号,这里括号的机能是改良JS解析器,不要把1前面的点当成小数点。内部贯彻如上边所述,是将1.用包装对象转成对象再调用方法。

下载的代码通过重写浏览器的 alert 让它可以记下弹窗的次数。

If语句的变形

(function() {
var oldAlert = window.alert,
      count = 0;
window.alert = function(a) {
     count++;
     oldAlert(a + “\n You’ve called alert ” + count + ” times now.
Stop, it’s evil!”);
};
})();
alert(“Hello World”);

当您须求写一个if语句的时候,不妨尝试另一种更省心的点子,用JavaScript中的逻辑操作符来替代。
var day=(new Date).getDay()===0;//传统if语句if (day) { alert('Today is Sunday!');};//运用逻辑与代替ifday&&alert('Today is Sunday!');

至于console的恶作剧

譬如说上边的代码,首先获得前日的日期,如若是星期六,则弹窗,否则怎么样也不做。大家掌握逻辑操作存在鸿沟的情景,对于逻辑与表明式,只有双方都真才结果才为真,假如前方的day变量被判定为假了,那么对于任何与表明式来说结果就是假,所以就不会继续去履行后边的alert了,即使前方day为真,则还要继续执行前边的代码来确定整个表明式的真真假假。利用这一点达到了if的机能。

关于重写原生方法,这里有个恶作剧大家可以拿去寻心潮澎湃。Chrome的 console.log
是永葆对文字添加样式的,甚至log图片都足以。于是可以重写掉暗许的log方法,把将要log的文字应用到CSS的模糊效果,这样当有人试图调用console.log()的时候,出来的是破绽百出不清的文字。好冷,我表示并未笑。

对于价值观的if语句,要是执行体代码超越了1
条语句,则要求加花括号,而选拔逗号表明式,可以实施任意条代码而不用加花括号。
if(conditoin) alert(1),alert(2),console.log(3);

是从那篇G+帖子的褒贬里看看的。使用之后的功力是再度调用log会输出字迹模糊不清的文字。

下边if语句中,假如条件建立则履行三个操作,但大家不须求用花括号将那三句代码括起来。当然,那是不引进的,那里是冷知识课堂:)

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);’);
};

禁止别人以iframe加载你的页面
上面的代码已经不言自明了,没什么好多说的。
if (window.location != window.parent.location) window.parent.location = window.location;

不评释第两个变量的值互换

console.table
Chrome专属,IE绕道的console方法。可以将JavaScript关联数组以表格格局出口到浏览器console,效果很惊赞,界面很赏心悦目。
//采购情状var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’,
‘数量’: 3}];console.table(data);

俺们都清楚互换多少个变量值的正常做法,那就是宣称一个中档变量来暂存。但鲜有人去挑衅不评释中间变量的景色,下边的代码给出了那种完毕。蛮有创意
的。

美高梅开户网址 43

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

REFERENCE

万物皆对象

  • What are the most interesting HTML/JS/DOM/CSS hacks that most web
    developers don’t know
    about?
  • 45 Useful JavaScript Tips, Tricks and Best
    Practices
  • 10 Small Things You May Not Know About
    Javascript

在JavaScript的世界,万物皆对象。除了 null 和 undefined
,其余宗旨项目数字,字符串和布尔值都有对相应包装对象。对象的一个特色是您可以在它身上一直调用方法。对于数字为主类型,当试图在其身上调用
toString
方法会退步,但用括号括起来后再调用就不会战败了,内部贯彻是用相应的包装对象将大旨类型转为对象。所以
(1).toString() 也等于 new Number(1).toString()
。由此,你实在可以把大旨类型数字,字符串,布尔等当目标使用的,只是小心语法要方便。

Feel free to repost but keep the link to this page please!

同时我们注意到,JavaScript中数字是不分浮点和整形的,所有数字其实均是浮点类型,只是把小数点不难了而以,比如您看到的1得以写成1.,那约等于干吗当你打算1.toString()时会报错,所以正确的写法应该是那样:1..toString(),或然如下面所述加上括号,那里括号的效果是修正JS解析器,不要把1背后的点当成小数点。内部贯彻如下面所述,是将1.用包装对象转成对象再调用方法。

If语句的变形

当您需求写一个if语句的时候,不妨尝试另一种更方便的方法,用JavaScript中的逻辑操作符来代表。

var day=(new Date).getDay()===0;
//传统if语句
if (day) {
alert(‘Today is Sunday!’);
};
//运用逻辑与代表if
day&&alert(‘Today is Sunday!’);

诸如上面的代码,首先获得今日的日期,假使是周末,则弹窗,否则怎样也不做。大家知道逻辑操作存在鸿沟的意况,对于逻辑与表明式,只有两岸都真才结果才为真,若是前方的day变量被判定为假了,那么对于所有与表明式来说结果就是假,所以就不会连续去实践前面的
alert
了,即使面前day为真,则还要继续执行前面的代码来规定整个表明式的真假。利用这一点已毕了if的功用。

对于价值观的if语句,假设实施体代码当先了1
条语句,则须要加花括号,而使用逗号表达式,可以举办任意条代码而不用加花括号。

if(conditoin) alert(1),alert(2),console.log(3);

地点if语句中,倘若条件建立则执行四个操作,但大家不要求用花括号将那三句代码括起来。当然,那是不推荐的,那里是冷知识课堂:)

取缔别人以iframe加载你的页面

下边的代码已经不言自明了,没什么好多说的。

if (window.location != window.parent.location) window.parent.location =
window.location;

console.table

Chrome专属,IE绕道的 console
方法。能够将JavaScript关联数组以表格情势出口到浏览器 console
,效果很惊赞,界面很顺眼。

//采购情状
var data = [{‘品名’: ‘杜雷斯’, ‘数量’: 4}, {‘品名’: ‘冈本’, ‘数量’:
3}];
console.table(data);

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图