这里哈希(#)的意义是什么,它与.js文件有什么关系:
<script src="foo.js#bar=1"></script>
答案 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。