.js文件后面的哈希(#)是什么意思?

What does the hash (#) mean after a .js file?

本文关键字:是什么 意思 哈希 文件 js      更新时间:2023-09-26

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

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

脚本后的哈希值,用于内嵌脚本进行配置。例如,请看下面提供的示例(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行是否在属性处出现第5行散列第2行。然后,如果哈希存在第6行,则提取第7行中的哈希数据,并继续执行该函数。

在加载脚本方面没有做任何事情。我猜测的是,脚本本身寻找自己的脚本标记,并挑选哈希(bar=1)之后的部分,并使用它来配置其行为。要做到这一点,他们可能必须循环遍历所有脚本标记并匹配src属性。

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

URL中哈希之后的部分称为片段标识符。如果存在,它指定整个资源或文档中的一部分或位置。当与HTTP一起使用时,它通常指定页面中的一个部分或位置,浏览器可以滚动显示页面的该部分。

相对于JavaScript文件,程序的作者很可能使用它作为向文件传递参数的方法。但是,不应该使用这种方法。url可以包含相同目的的查询字符串。

然而,将参数嵌入到JavaScript文件的URL中从来都不是一个好主意,因为对于每一个不同的参数集,URL都会被再次缓存,这是对内存的浪费。相反,最好将查询字符串设置在包含脚本本身的HTML页面的URL上。这是因为JavaScript有一个内置的属性来访问网页的查询字符串:location.search