js路径后面带个动态参数是什么意思?

8/6/2012 10:43:14 AM

一个是防止跨版本缓存。第二个是识别版本。

在分析Bo-blog的代码时,发现js的路径竟然是带参数的,想想有点不可思议。phdh?本文来自h t t p : / / s p y r i s e . o r g / b l o g/Kf带M

<script type="text/javascript" src="images/js/common.js?jsver=2.1.1.3626.0"></script>?UvWz@j们 本文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ ?,ndrt。
<script type="text/javascript" src="lang/zh-cn/jslang.js?jsver=2.1.1.3626.0"></script>
<script type="text/javascript" src="images/js/ajax.js?jsver=2.1.1.3626.0"></script>
<script type="text/javascript" src="images/js/swfobject.js?jsver=2.1.1.3626.0"></script>U,x们本文来自h t t p : / / s p y r i s e . o r g / b l o g/山b#S

细细研究下来,有以下三种可能:f本文来自h t t p : / / s p y r i s e . o r g / b l o g/。AtE山W#xW?

1) Apache URLRewrite等服务器级别的转向支持。如可以把test.js?folder=/js/解析为/js/test.js。。Kv 本文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ 们!#G我。xl

2) Javascript和HTML,图片一样,作为静态文件会被浏览器缓存。后面加个随机数,能保证每次请求都是新文件,如common.js?t=12442344。,z山本文来自h t t p : / / s p y r i s e . o r g / b l o g/们OGCp

3) 这个参数是供整体页面中查询js的参数所用,属js外部应用,但绝对不是供js的内部应用。如你有一个html页面,里面写上一段:j!!xxG 本文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ ?vh?

<script type="text/javascript" src="test.js?a=100&b=2"></script>IYlt 本文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ r

首先,这个?a=100&b=2是绝对不会影响到test.js的内部函数执行的,因为test.js无法接收到这个参数。lKl#Ip本文来自h t t p : / / s p y r i s e . o r g / b l o g/们

其次,这个?a=100&b=2是可以通过html中的DOM结构访问到这个js路径。如下例:.SSb山,带带本文来自h t t p : / / s p y r i s e . o r g / b l o g/pY

var Xsrc = document.getElementsByTagName("script")[document.getElementsByTagName("script").length-1].srcbICG 本文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ fbAI山#

此时Xsrc能得到test.js?a=100&b=2,然后通过正则表达式的方法来解析出这些参数:a=100及b=2。然后你拿这两个参数实现一些判断。pC本文来自h t t p : / / s p y r i s e . o r g / b l o g/带pC@。

最后,回头来看看文首的?jsver=2.1.1.3626.0,第一种肯定是不可能的,不是每一种服务器都支持URLRewrite的。我觉得这个性质介于第二种和第三种之间。没觉得jsver=2.1.1.3626.0有什么实用的,顶多用来判断是什么版本,但这个版本号本来就是从PHP代码中得到的。我觉得这个参数多半是象征性的,没啥实际用处。v?。

文来自http://spyrise.org/blog/javascript-js-cansu-parameter/ KIb@