精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

挑戰(zhàn)極限之最短的JavaScript: 地址欄載入腳本

開發(fā) 前端
相信大家都在地址欄里用javascript:的形式執(zhí)行過腳本。這種方法簡單實用,測試比較短的腳本時經(jīng)常用到。

相信大家都在地址欄里用javascript:的形式執(zhí)行過腳本。這種方法簡單實用,測試比較短的腳本時經(jīng)常用到。

不過腳本比較長的時候,需要復(fù)制密密麻麻一大段到地址欄里,顯得很不美觀,而且腳本修改起來也很不容易。因此一般先把腳本寫在單獨一個文件里,然后用javascript: 的形式動態(tài)載入腳本到頁面中。不少網(wǎng)頁插件都是用這個方法載入。

平時,我們用最簡單的代碼實現(xiàn)動態(tài)載入:

  1. javascript:var o=document.createElement('script');o.src='...';document.body.appendChild(o);void(0) 

當(dāng)然,這對于載入插件來說足夠OK了。但是不久前看到一個稍有修改的方法,讓我開始琢磨這段代碼究竟可以壓縮到多短!

他的代碼大致相同,只是更嚴謹:

  1. javascript:(function(o){o.src='...';document.body.appendChild(o)})(document.createElement('script'));void(0) 

雖然代碼比先前的還長,但是將變量置于閉包中,避免潛在的沖突。并且將 document.createElement作為閉包的參數(shù),巧妙的節(jié)省了一個var單詞。

閑來無事,于是考慮起這代碼能否精簡再精簡。順便復(fù)習(xí)下js里面的各種特性。

當(dāng)然,首先默認了幾個地址欄載入腳本要遵循的規(guī)則:

1. 不引入全局變量

2. 兼容主流瀏覽器

3. 載入過程不影響頁面

> 不影響全局變量,我們需要使用閉包來隱藏我們的私有變量;

> 兼容主流瀏覽器,就必須使用標(biāo)準(zhǔn)的方法,兼容性判斷只會增加代碼長度;

> 如果簡單的使用innerHTML添加元素,就有可能導(dǎo)致存在的元素刷新;

于是我們開始逐步分析。

顯然,最先想到的就是匿名閉包的調(diào)用。

通常我們都是用: (function(){})() 的形式調(diào)用一個匿名閉包。注意紅色的優(yōu)先級括號是必不可缺的,否則就是一個錯誤的語法。

但也可以使用另一種形式:+function(){}() 前面的+號可以換成-!~等等一元操作符。不過這僅僅是1字節(jié)之差。

另一個顯然的,就是可以把void(0)的參數(shù)替換成閉包調(diào)用的表達式。void雖然只是個關(guān)鍵字,但有類似函數(shù)的功能,對于任何參數(shù)都返回undefined。如果沒有void,在地址欄執(zhí)行了javascript:后,頁面就變成了腳本表達式返回值,大家應(yīng)該都見過。

于是經(jīng)過顯而易見的觀察,略微減少了3個字符。

  1. javascript:void(+function(o){o.src='...';document.body.appendChild(o)}(document.createElement('script'))) 

不過上面都是淺層次的觀察?,F(xiàn)在我們來仔細的分析。

我們?yōu)槭裁匆褂瞄]包,就是為了防止我們的變量和頁面里的沖突。那么可以不使用變量嗎?想要不出現(xiàn)變量,唯一辦法就是使用鏈?zhǔn)降倪B等操作:利用上個操作的返回值作為下個操作的參數(shù)。這段代碼共有3個操作:創(chuàng)建腳本元素/腳本元素src賦值/添加腳本元素。仔細參考下W3C的手冊,DOM.appendChild不僅可以添加元素,并且返回值也是此元素。而src賦值和元素添加的順序可以互換。因此我們可以用鏈?zhǔn)讲僮?,從而徹底告別閉包和變量:

  1. javascript:void(document.body.appendChild(document.createElement('script')).src='...'

這一步,我們精簡了19個字符!

我們繼續(xù)觀察。上面的代碼里出現(xiàn)了2個document。我們?nèi)绻靡粋€短變量代替的話又可以減少字數(shù)。但使用了變量的話又會出現(xiàn)沖突的問題,于是又要用到閉包。。。仔細的回憶下,js里有個我們平時不推薦使用的東西:with。沒錯,使用他就可以解決這個問題。我是只需with(document){...}即可。因為只有一行代碼,所以那對大括號也可以去掉。于是又減少了4個字符:

  1. javascript:with(document)void(body.appendChild(createElement('script')).src='...'

值得注意的是,void不再套在最外層了,因為with和if, for他們一樣,不再是表達式,而是語句了。

此時,代碼里的每句都是各司其責(zé),連重復(fù)的單詞都找不到了。我們還能否再精簡?如果硬要找,那也只得從void這家伙身上找了。如果去掉它,那地址欄執(zhí)行后,頁面就變成了腳本元素的src字符了。顯然刪不得。但我們可以嘗試換個,比如alert。在對話框過后,頁面仍保留著。

先前說了,void的功能僅僅是返回一個undefined,而alert沒有返回值。這里就不得不說javascript與其他語言的不同之處了。在其他的語言里,幾乎都有函數(shù)/過程這么兩概念,過程就是沒有返回值的函數(shù)。不過js可不同,在js里任何函數(shù)都有一個返回值,即使“ 沒有返回值 ”也是一種返回值,他就是undefined。所以alert和void有著相同的返回值:undefined。只要地址欄執(zhí)行后結(jié)果是它,頁面就不會轉(zhuǎn)跳,而其他諸如false,0,null,NaN等等都不行。

于是我們只需讓表達式返回的是undefined就可以了,但必須比void()這幾個字符短。要產(chǎn)生一個undefined,除了它字面常量外,另外就是調(diào)用沒有返回值的函數(shù),或者訪問一個對象不存在的屬性。我們要盡可能簡短。如果頁面里使用了jQuery的話,我們用$.X就可以得到一個undefined。但沒用jq的話,就不能保證是否存在變量$了。既然找不到足夠簡短的全局變量,我們可以用json創(chuàng)造個匿名的,比如[]或{},然后訪問他的不存在屬性,比如[].X。于是,我們可以告別void了:

  1. javascript:with(document)body.appendChild(createElement('script')).src='...';[].X 

這樣就減少了1個字節(jié)。我們還可以合并下代碼,用表達式替換X:

  1. javascript:with(document)[][body.appendChild(createElement('script')).src='...'

這樣又減少了1個字節(jié)。

事實上,js里的任何一個變量都是繼承于Object的,即使數(shù)字也不例外。所以,我們完全可以用一個數(shù)字替換[],這樣更進一步減少1個字符

  1. javascript:with(document)0[body.appendChild(createElement('script')).src='...'

到此,代碼里除了src字符外,縮短到76字節(jié)。

當(dāng)然,最終的極限仍在探索中。。。

配合Google的短域名服務(wù)Google URL Shortener,我們可以縮短腳本的URL,例如:

  1. javascript:with(document)0[body.appendChild(createElement('script')).src='http://goo.gl/QPp29'

原文:http://www.cnblogs.com/index-html/archive/2011/10/08/fav_load_js_min.html

【編輯推薦】

  1. JavaScript內(nèi)部原理之變量對象
  2. 移動網(wǎng)站開發(fā)中常用的10段JavaScript代碼
  3. JavaScript性能優(yōu)化技巧之函數(shù)節(jié)流
  4. JavaScript大辯論:實施改進還是徹底放棄
  5. Google強推Dart語言替代JavaScript 意欲何為?
責(zé)任編輯:陳貽新 來源: EtherDream
相關(guān)推薦

2009-07-16 14:13:35

Swing地址欄

2011-02-25 09:03:03

Chrome

2009-08-06 17:34:27

地址欄控件C#記憶功能

2011-06-28 09:23:22

Firefox地址欄

2009-03-30 08:58:52

Firefox瀏覽器

2015-12-01 10:43:55

2011-02-21 14:10:50

Chrome

2011-11-04 15:28:49

傲游瀏覽器

2012-07-16 16:23:29

Firefox瀏覽器

2021-05-27 15:06:41

Chrome瀏覽器Google

2018-09-17 13:39:14

Chrome瀏覽器網(wǎng)址

2011-05-20 17:23:41

Chrome 13

2012-11-06 13:17:05

Chrome瀏覽器

2020-10-21 11:48:22

欺騙漏洞

2016-10-18 14:22:41

2009-08-26 23:27:28

2009-08-14 11:32:45

2011-05-24 11:12:51

Chrome

2010-07-16 14:12:56

傲游3.0

2010-08-26 17:54:16

微軟
點贊
收藏

51CTO技術(shù)棧公眾號

成人在线电影网站| 国产精品久久久久久久久粉嫩av| 国产视频1区2区3区| 欧美性天天影视| 黑人精品欧美一区二区蜜桃| 亚洲欧洲免费视频| 爱情岛论坛成人| 黄在线免费观看| 成人免费高清在线| 欧洲成人午夜免费大片| 三级黄色免费观看| 大奶在线精品| 在线精品国精品国产尤物884a | 婷婷电影在线观看| 日本一区二区三区国色天香| 91亚洲va在线va天堂va国| 九九视频在线观看| 林ゆな中文字幕一区二区| 色婷婷综合五月| 久久久久福利视频| 涩涩视频免费看| 国产激情小视频在线| 羞羞视频在线观看一区二区| 亚洲色图一区二区三区| 久久www免费人成精品| 亚洲图片小说视频| 久久伦理在线| 日韩成人中文字幕| 一区二区三区视频在线观看免费| 成a人片在线观看| 国产丝袜美腿一区二区三区| 操人视频欧美| 91欧美日韩麻豆精品| 亚洲综合电影一区二区三区| 久久成人亚洲精品| 无码少妇一区二区| 伦理一区二区三区| 日韩一区二区高清| 日韩爱爱小视频| 黄色污网站在线观看| 国产精品国产自产拍高清av | 四虎国产精品免费久久5151| 舔着乳尖日韩一区| 无颜之月在线看| 日本在线观看网站| 99久久99久久精品国产片果冻 | 欧美成人自拍视频| 成人一级片免费看| 天天躁日日躁狠狠躁欧美巨大小说 | 国产午夜精品一区二区理论影院| 国产精品毛片一区二区在线看| 亚洲欧洲一区二区三区在线观看| 中文字幕在线播放一区| 日韩中文字幕无砖| 欧美一级片在线看| av在线免费看片| 日韩五码电影| 欧美精品久久99久久在免费线 | 亚洲视频第一页| 婷婷五月精品中文字幕| 日韩伦理一区二区| 欧美视频一区二区三区在线观看 | 精品av久久707| 熟妇无码乱子成人精品| 99精品视频在线免费播放 | 国产精品v日韩精品v在线观看| 成人影院网站| 伊人色综合久久天天| 国产成人三级视频| 岛国在线视频| 国产精品热久久久久夜色精品三区 | 一级黄色大毛片| 麻豆精品新av中文字幕| 国产拍精品一二三| 国产伦理一区二区| 国产一区二区三区在线观看免费视频| 成人免费网站在线观看| 国产裸体无遮挡| 国产99久久久国产精品| 国产乱码精品一区二区三区日韩精品| 99久久久无码国产精品免费| 国产成a人亚洲| 九色综合日本| 狠狠v欧美ⅴ日韩v亚洲v大胸| 久久五月婷婷丁香社区| 先锋影音一区二区三区| 日本高清视频在线播放| 亚洲情趣在线观看| 少妇熟女一区二区| 成人日韩欧美| 精品国产91久久久久久| 天天影视综合色| 黄色成人小视频| 欧美一区二区三区爱爱| 成年人的黄色片| 日本一二区不卡| 国产69精品久久777的优势| 欧美超级免费视 在线| 国产一二三四在线| 天堂一区二区在线免费观看| 国产精品69av| 国产精品人人爽| av不卡在线播放| 日本一区视频在线观看免费| 秋霞午夜在线观看| 性欧美疯狂xxxxbbbb| 亚洲欧美国产一区二区| 老司机福利在线视频| 亚洲精品乱码久久久久久日本蜜臀| 免费看欧美黑人毛片| 国偷自产一区二区免费视频| 欧美在线影院一区二区| 亚洲一区二区中文字幕在线观看| 少妇精品导航| 欧美www在线| 97久久久久久久| 日韩电影免费一区| 99精彩视频| 日本护士...精品国| 亚洲另类春色国产| 无码精品a∨在线观看中文| av中文资源在线资源免费观看| 欧美日韩国产影院| 少妇高潮毛片色欲ava片| 北岛玲heyzo一区二区| 婷婷亚洲久悠悠色悠在线播放| 国产精品无码一本二本三本色| 欧洲亚洲精品久久久久| 亚洲а∨天堂久久精品9966| 日韩丰满少妇无码内射| 激情久久综合| 2018中文字幕一区二区三区| 午夜老司机福利| 日本一区二区三级电影在线观看 | 激情亚洲另类图片区小说区| 亚洲精品视频在线观看视频| 91精品人妻一区二区三区| 国产一区二区麻豆| 亚洲一区中文| 亚洲999一在线观看www| 五月婷婷丁香网| 亚洲人成在线播放网站岛国 | 欧美午夜精品| 国产成人精品免高潮在线观看 | 激情成人综合网| 狼狼综合久久久久综合网| 污视频网站免费在线观看| 欧美专区在线观看一区| 欧美大片免费播放器| 亚洲午夜精品一区二区国产| 97久久精品人人澡人人爽缅北| aaa一区二区三区| 国产精品你懂的在线欣赏| 国产午夜福利在线播放| 国产精品毛片aⅴ一区二区三区| 亚洲另类xxxx| 日本中文字幕免费| 成人午夜视频在线| 国产又爽又黄ai换脸| 99只有精品| 国产视频在线一区二区| 国产午夜福利精品| 豆国产96在线|亚洲| 四虎一区二区| 欧美成人三级伦在线观看| 亚洲一区站长工具| 亚洲成人激情在线| 久久精品欧美一区二区| 国产成人丝袜美腿| 日韩视频 中文字幕| 国产精品成人国产| 亚洲午夜色婷婷在线| 日本一级黄色录像| 久久av中文字幕片| 香蕉久久免费影视| 免费视频成人| 久久精品最新地址| 瑟瑟视频在线免费观看| 欧美激情一区二区三区| 四季av一区二区| 日韩av专区| 国产国语刺激对白av不卡| 香港一级纯黄大片| 日韩欧美精品免费在线| 成年人看片网站| 伊人天天综合| 久久99蜜桃综合影院免费观看| 色资源二区在线视频| 亚洲精品自拍视频| 久久狠狠高潮亚洲精品| 不卡的av中国片| 水蜜桃在线免费观看| 动漫3d精品一区二区三区乱码| 亚洲人成7777| 亚洲影院污污.| 制服丝袜中文字幕在线| 欧美videofree性高清杂交| 麻豆国产尤物av尤物在线观看| av爱爱亚洲一区| 日本999视频| 成人精品影院| 91精品网站| av电影免费在线看| 亚洲人成网站免费播放| 欧美日韩一二三四区| 国产午夜亚洲精品午夜鲁丝片| 777视频在线| 午夜精品影院| 蜜桃视频成人| 国产精品一区二区三区av| 国产91精品高潮白浆喷水| 久久手机免费观看| 制服丝袜中文字幕一区| 18精品爽视频在线观看| 99久久99久久久精品齐齐| 在线观看日本一区二区| 国产一区二区高清| 亚洲高清视频一区| 超碰在线亚洲| 国产美女久久精品| 牛牛精品一区二区| 蜜臀久久99精品久久久久久宅男 | 精品久久人人做人人爽| 亚洲免费在线视频观看| 亚洲日本在线视频观看| 永久免费未满蜜桃| 在线观看一区视频| 日本不卡二区高清三区| 免费一级欧美在线大片 | 欧美成人ⅴideosxxxxx| 中日韩美女免费视频网站在线观看 | 亚洲特级片在线| 久久久久国产免费| 亚洲人妖在线| 激情视频小说图片| 日韩精品免费一区二区在线观看 | 蜜桃精品视频| 久久久久久久久久久网站| 黄色av网址在线免费观看| 亚洲电影免费观看高清完整版在线观看 | 中文在线观看免费| 一本色道久久综合狠狠躁篇怎么玩| 中文字幕在线观看免费| 午夜精品久久久久久不卡8050| 情侣偷拍对白清晰饥渴难耐| 久久婷婷一区二区三区| 中文字幕一区二区三区乱码不卡| 蜜臂av日日欢夜夜爽一区| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 欧美大片一区二区三区| 中文字幕无码乱码人妻日韩精品| 亚洲天堂网站| 日韩精品久久久久久久玫瑰园| 96日本xxxxxⅹxxx17| 一区二区三区不卡视频在线观看| 国产真实乱人偷精品人妻| 93久久精品日日躁夜夜躁欧美| aaaaa黄色片| 激情综合网最新| 日本成人在线免费视频| 国产精品综合色区在线观看| 日本老太婆做爰视频| 亚洲女同一区| 大地资源网在线观看免费官网| 第一sis亚洲原创| 亚洲成人自拍| 日韩欧美四区| 久久久久久久免费| 国内露脸中年夫妇交换精品| yy111111少妇影院日韩夜片| 精品国产第一国产综合精品| 亚洲jizzjizz日本少妇| av日韩久久| 国产成人精品久久亚洲高清不卡| 免费污视频在线观看| 欧美日本国产在线| 黑人精品视频| www.99久久热国产日韩欧美.com| 麻豆影视国产在线观看| 中文字幕不卡av| 欧美69xxx| 国产亚洲视频中文字幕视频| 国产高清在线观看| 中国china体内裑精亚洲片| 素人av在线| 中文字幕在线国产精品| 蜜芽在线免费观看| 性欧美在线看片a免费观看 | 色综合久久久久久中文网| 色婷婷av在线| 午夜欧美不卡精品aaaaa| 久久毛片亚洲| 国产成人aa精品一区在线播放| 欧美大片1688| 国产美女精品视频| 日韩高清二区| 精品免费视频123区| 成人在线视频中文字幕| 精品福利影视| 精品国产精品| 亚洲免费不卡| 精品盗摄女厕tp美女嘘嘘| 热舞福利精品大尺度视频| 99久久www免费| 国产婷婷一区二区三区| 丝袜亚洲另类欧美综合| 三级性生活视频| www..com久久爱| 亚洲一区二区自偷自拍 | 色老头视频在线观看| 久久香蕉国产线看观看av| 人在线成免费视频| 国产精品视频永久免费播放| 日本在线成人| 欧美大香线蕉线伊人久久国产精品| 国产aⅴ精品一区二区三区久久| 成人在线视频电影| 九九久久婷婷| 欧美日韩一级在线 | 黄色一级视频在线播放| 久久先锋资源| 日韩色在线观看| 亚洲三区在线播放| 日韩专区在线观看| 黄色视屏在线免费观看| 成人精品一区二区三区电影免费| 国产欧美一区二区三区米奇| 日本在线观看一区二区| 亚洲精品一区二区在线看| 欧美日本视频在线观看| 另类专区欧美蜜桃臀第一页| 中国免费黄色片| 亚洲精选免费视频| 正在播放木下凛凛xv99| 精品久久久久99| 日本三级在线视频| 国产激情综合五月久久| 欧美变态挠脚心| 欧美一级中文字幕| 麻豆精品一二三| 第一次破处视频| 亚洲一线二线三线视频| 国产按摩一区二区三区| 亚洲人成网站在线播| 国产免费拔擦拔擦8x高清在线人| 国产精品久久久久久久久借妻 | 丝袜美腿综合| 天天想你在线观看完整版电影免费| 日韩va亚洲va欧美va久久| 久久人人爽人人人人片| 亚洲第一主播视频| 91免费视频播放| 亚洲美女av在线播放| 高清精品在线| 官网99热精品| 欧美在线看片| 国内精品免费午夜毛片| 黄色片在线免费看| 4438全国成人免费| 国产精品男女| 亚洲五码在线观看视频| 老司机午夜精品| 日本综合在线观看| 在线观看日韩一区| 香蕉视频网站在线| 2019av中文字幕| 欧美顶级毛片在线播放| 欧美一级欧美一级| 成人免费视频免费观看| 欧美黑人精品一区二区不卡| 欧美疯狂性受xxxxx喷水图片| 91xxx在线观看| 国产精品高潮粉嫩av| 久久网站免费观看| 韩国日本美国免费毛片| 国产欧美精品一区二区三区四区| 国产在线视频在线观看| 亚洲成人久久久| 性欧美freesex顶级少妇| 狠狠干一区二区| 亚洲欧美视频一区二区三区| 完美搭档在线观看| 亚洲国产日韩a在线播放性色| 天堂在线观看免费视频| 欧美最猛性xxxxx免费| 深爱激情综合| 在线免费视频一区| 成人欧美一区二区三区小说| 国产黄色av网站| 午夜精品久久久久久99热软件 | 国产一区在线观| 亚洲国产电影| 免费成人深夜夜行p站| 色综合色综合色综合 | 亚洲精品久久久久| 91精品xxx在线观看| 成人在线观看www| 99这里只有久久精品视频| 久久久久久91亚洲精品中文字幕| 亚洲电影免费观看高清完整版在线观看|