哈希(#)在.js文件后的含义是什么?

时间:2011-10-18 14:00:30

标签: javascript html

这里哈希(#)的意义是什么,它与.js文件有什么关系:

<script src="foo.js#bar=1"></script>

4 个答案:

答案 0 :(得分:4)

嵌入式脚本使用脚本后的哈希值进行配置。例如,看一下提供的示例(facebook):

1. window.setTimeout(function () {
2.    var a = /(connect.facebook.net|facebook.com\/assets.php).*?#(.*)/;
3.    FB.Array.forEach(document.getElementsByTagName('script'), function (d) {
4.        if (d.src) {
5.            var b = a.exec(d.src); //RegExp.exec on the SRC attribute
6.            if (b) {
7.               var c = FB.QS.decode(b[2]); //Gets the information at the hash
8.               ...

在脚本中,检查每个<script>标签第3行的哈希第2行的出现第5行。属性。然后,如果哈希存在第6行,则提取哈希数据第7行,并且该函数继续。

答案 1 :(得分:3)

我在加载脚本方面没有做任何事情。我猜测的是,脚本本身会查找自己的脚本标记,然后在哈希(bar = 1)之后选择该块,并使用它以某种方式配置其行为。为此,他们可能必须遍历所有脚本标记并匹配src属性。

答案 2 :(得分:2)

它可能在引用的.js文件中使用,读取原始URL并提取参数(例如使用window.location}并解析#之后的内容。< / p>

答案 3 :(得分:0)

网址中哈希后的部分称为fragment identifier。如果存在,则指定整个资源或文档中的部分或位置。与HTTP一起使用时,它通常指定页面中的部分或位置,浏览器可以滚动显示该部分页面。

关于JavaScript文件,程序的作者很可能使用它作为将参数传递给文件的方法。但是,不应使用此方法。网址可能包含query strings,其用途相同。

尽管如此,将参数嵌入到JavaScript文件的URL中绝不是一个好主意,因为对于每个不同的参数集,URL都会被再次缓存,这会浪费内存。相反,最好在包含脚本本身的HTML页面的URL上设置查询字符串。这是因为JavaScript具有内置属性来访问网页的查询字符串:location.search。您可以阅读更多相关信息here