Javascript包含动态SRC =“url”的技术

时间:2014-01-21 15:47:20

标签: javascript performance webpage

是否可以(并且一个好主意)通过哈希网址将动态数据传递给JavaScript包含文件?

如:

<head> <script src="scripts.js#x=123&y=456"></script> </head>

我正在寻找动态构建页面中内联js的替代方法:

<head> 
    <script src="scripts.js#x=123&y=456"></script> 
    <script>
       $( document ).ready(function() {
          pageInit(123, 456)
       });
    </script>
</head>

避免使用内联js是个好主意吗?如何在没有ajax的情况下传递动态数据,这会产生不必要的往返网络请求?

注意: hash bang url是一个特殊的,因为浏览器在检查缓存时会忽略url的哈希部分。至少对于html文件。

所以所有这些都将重用它在缓存中的index.html文件:

index.html
index.html#x=123
index.html#x=345345
index.html#x=2342&y=35435

同样的原则应该适用于javascript文件。我希望实现的是从页面到页面重用script.js的缓存版本。

转到index.php,包括:

<head> <script src="scripts.js#x=123&y=456"></script> </head>

然后去fun.php包含这个

<head> <script src="scripts.js#x=898756465&y=5678665468456"></script> </head>

然后去看看.php包含这个

<head> <script src="scripts.js#session=887987979&csrf_token=87965468796"></script> </head>

从页面视图到页面视图,通过哈希爆炸传递页面所需的任何信息,同时从缓存中重用scirpt.js。

那么,是否可以从scirpts.js中读取哈希爆炸信息?

1 个答案:

答案 0 :(得分:0)

如果您创建的HTML文件是动态的,那么只需创建内联JavaScript。编写包含只会从浏览器创建一个额外的请求,您可以首先避免这种请求。

修改: 只需包含一个读取URL的JavaScript文件,您不需要传递任何变量(但当然,您也可以):

$(document).ready(function() {
    // pseudo code
    hashbang = location.href.substr(location.href.indexOf('#') + 1);
    if (hashbang.x && hashbang.y) {
        pageInit(hashbang.x, hashbang.y);
    } else if (hashbang.csrf_token) {
        // do something else
    }
});