2011-09-21 101 views
0

相反的:是否有可能使用一個變量的javascript參考

<script src="/scripts/myJsFile.v1.js" type="text/javascript></script> 

有類似

<script src="/scripts/myJsFile." + versionVar + ".js" type="text/javascript></script> 

這樣,當我們更新版本的js文件的用戶將不必清除它們的緩存。

+9

你怎麼想的變量將從何而來? – SLaks

+0

如果你正在考慮'versionVar'作爲JavaScript變量,那麼不,你不能這樣做。但是,您可以動態地插入腳本標記。 –

+0

您不能在純HTML中包含變量來動態定義JS源碼 – rabudde

回答

5

並非如此,因爲您將HTML和JavaScript混合在一起。 HTML沒有可用的JavaScript變量。

但是,您可以做的是動態添加<script>標籤,即通過JavaScript。這樣一來,你明明能夠使用變量:

<script> 
var versionVar = "1.0"; 

window.addEventListener('load', function() { // on load 

    var scriptTag = document.createElement('script'); // create tag 
    scriptTag.src = "/scripts/myJsFile." + versionVar + ".js" // set src attribute 
    scriptTag.type = "text/javascript"; //set type attribute 
    document.getElementsByTagName('head')[0].appendChild(scriptTag); // append to <head> 

}, false); 
</script> 
2

您不能直接在HTML文件中執行此操作。但你仍然可以做到這一點的腳本標籤中,如果versopnVar是你window上下文中的JavaScript變量:

<script type="text/javascript"> 
var script = document.createElement('script'); 
script.setAttribute('src', '/scripts/myJsFile.' + versionVar + '.js'); 
script.setAttribute('type', 'text/javascript'); 
document.body.appendChild(script); 
</script> 

最後,這不是一個很好的形式給出這樣做。請分開閱讀這篇文章以獲取消息。

Alternative Style: Working With Alternate Style Sheets

1

它可能是更好的做這樣的事情

<script src="/scripts/myJsFile.js?v1" type="text/javascript></script> 

然後,當你和更新:

<script src="/scripts/myJsFile.js?v2" type="text/javascript></script> 

這將導致大多數瀏覽器拉文件而不是從緩存中提取。這意味着你不會有單獨的JS文件。但只會迫使用戶拉最近的。另外,如果你想讓它總是拉動文件,你可以用類似的方式附加一個隨機的int。

1

你不能這樣做,直出。

一種方法是使用一些服務器端代碼。
例如在PHP中:

<?php $version = "1.0"; ?> 

<script src="/scripts/myJsFile.<?php echo $version ?>.js" type="text/javascript></script> 
+1

謝謝,但我們沒有使用PHP – Darcy

0

你不得不更新網頁,以更新變量。此外,每次更改時都必須更新您的JavaScript文件名。

您可以使用查詢字符串使您的JS唯一。

<script src="/scripts/myJsFile.js?version=2" type="text/javascript></script> 

marshall &我有同樣的想法。

此外,每次更新Javascript文件時都必須更新HTML文件。

2

瞭解Google如何加載其分析。然後也許嘗試類似的東西:

(function() { 
    var versionVar = 9; 

    var ga = document.createElement('script'); 
ga.type = 'text/javascript'; 
ga.src = 'http://www' + '.google-analytics.com/ga' + versionVar + '.js'; 

    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s); 
})(); 
1

不完全是這樣,但你可以創建一個新的腳本節點,例如, document.createElement並將其添加到頁面。

var s = document.createElement("script"); 
s.src = ... 
document.body.appendChild(s); 

您也可以使用document.write呼叫做同樣的...

相關問題