帮我理解<script src =“some.js?param1 = one; param2 = two”> </script>

时间:2009-12-23 17:13:19

标签: javascript ajax web-services scripting rest

我有时在网页上观察到下面的块。所以我很想知道这到底是做什么的?或者为什么以这样的方式写出来?

<script src="somefile.js?param1=one&param2=two" />

我只能在它背后的几个意图中表现出来

  • 它不是页面URL(我的意思是.aspx / .php / .jsp等)所以它不是黑客类的代码,用户可以添加这样的代码来传递数据而不会引起用户注意,因为它的标记不会呈现UI或实现旧类型的AJAX替代
  • 如果用户不希望缓存JS文件(像图像这样的任何其他资源),那么这种URL参数很有用。这可以是管​​理缓存的快捷方式

但我无法弄清楚

  • 看起来像页面网址参数,但这些参数在JavaScript文件中是否可读,并且还有一些额外的实用程序?
  • 这些参数在这里有什么额外的作用吗?
  • 使用这样的代码的其他可能的实际场景是什么?

所以请提供一些与相同的

相关的输入

谢谢,

6 个答案:

答案 0 :(得分:7)

在.js扩展名中运行非JS代码

在这种情况下,源.js文件可能(给定proper server-configurations)实际上有PHP / .NET代码,可以读取这些附加值。

正如你所说,避免缓存......

此外,人们有时会在其引用元素的末尾附加一个随机字符串,以避免加载缓存数据。

答案 1 :(得分:4)

javascript文件不是静态的(它是由服务器基于其查询字符串中的参数生成的)

OR

在JavaScript文件本身中,您可以检查自己的查询字符串参数(不仅仅是页面的参数,而是javascript源网址的参数)。

OR

(这与您的方案不完全匹配,但是)您还可以在图像和脚本URL的末尾添加参数作为版本控制方式。 url =“somescript.js?V = 3”的版本将被用户缓存,直到页面发生变化并且url不是=“somescript.js?V = 4”。无论浏览器设置如何,该文件都将被服务器上的版本替换。

我的猜测(不看这个特定情况)是javascript文件正在读取自己的查询字符串。我做到了这一点,非常有帮助。

答案 2 :(得分:4)

具有'.js'的网址没有任何意义。它可以仍然由服务器端脚本(如ASP或PHP)处理。

答案 3 :(得分:2)

它可以用于三个不同的原因:

1)根据参数在服务器中生成JavaScript文件;

2)避免缓存;

3)到pass parameters to JavaScript itself

答案 4 :(得分:2)

  
    
      

看起来像页面网址参数,但这些参数在JavaScript文件中是否可读,并且还有一些额外的实用程序?

    
  

you can在JavaScript中阅读它们,Scriptaculous使用该方法加载模块,例如:

<script type="text/javascript" src="scriptaculous.js?load=effects,dragdrop">
</script>
  
    
      

这些参数在这里有任何额外的作用吗?       在其中可以使用这样的代码的其他可能的实际场景是什么?

    
  

这也可以用于服务器端脚本加入和缩小,当然使用一些url重写技术来扩展.js,正如你所说,添加时间戳参数来打破浏览器缓存是一种常用技术。

答案 5 :(得分:0)

在实践中的一个例子是somefile.js的服务器端处理程序,它使用参数(其他脚本的名称)来确定实际需要哪些脚本并组合/缩小它们,将它们作为单个somefile.js返回脚本文件。