最短的javascript:地址栏载入脚本代码(2)

  于是我们只需让表达式返回的是undefined就可以了,但必须比void()这几个字符短。要产生一个undefined,除了它字面常量外,另外就是调用没有返回值的函数,或者访问一个对象不存在的属性。我们要尽可能简短。如果页面里使用了jQuery的话,我们用$.X就可以得到一个undefined。但没用jq的话,就不能保证是否存在变量$了。既然找不到足够简短的全局变量,我们可以用json创造个匿名的,比如[]或{},然后访问他的不存在属性,比如[].X。于是,我们可以告别void了:

复制代码 代码如下:


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

  这样就减少了1个字节。我们还可以合并下代码,用表达式替换X:

复制代码 代码如下:


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

  这样又减少了1个字节。

  
  事实上,js里的任何一个变量都是继承于Object的,即使数字也不例外。所以,我们完全可以用一个数字替换[],这样更进一步减少1个字符:

复制代码 代码如下:


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

  到此,代码里除了src字符外,缩短到76字节。
  
  当然,最终的极限仍在探索中。。。
  
  配合Google的短域名服务Google URL Shortener,我们可以缩短脚本的URL,例如:

复制代码 代码如下:

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdjxjj.html