如果您確實想要在頁面加載後將腳本添加到頁面中,則以下代碼將起作用:
(function() {
var po = document.createElement('script');
po.type = 'text/javascript'; po.async = true;
po.src = 'http://pathtoyourscript.com/script.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
你最終adjustBanner
功能會是這樣的:
function adjustBanner(width) {
width = parseInt(width);
var src = ' ';
if ((width >= 960) && (width < 1280)) {
src = 'edge_includes/index_edgePreload.js';
} else if (width >= 1280) {
src = 'edge_includes/index1250_edgePreload.js';
}
var po = document.createElement('script');
po.type = 'text/javascript'; po.async = true;
po.src = src;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
}
這段代碼做的是附加的腳本代碼到你的頁面,從而導致你的瀏覽器立即加載它。腳本加載時,瀏覽器中的JavaScript解釋器將繼續並運行腳本源。如果您使用JavaScript修改或修改變量,全局或模塊,只要JavaScript解釋器接收到源,該修改就會發生。
取決於你的腳本源在做什麼,你可能要小心調用此上每 window.resize事件沒有清理舊腳本(例如設置模塊,以基金)。這是因爲每次調整窗口大小時,與當前分辨率相關的腳本都會附加到文檔源中,從而改變已經在JavaScript上下文中設置的所有變量。
叫我瘋了,但你可能要考慮使用CSS media queries而不是JavaScript/jQuery來完成你想要的。您可以爲特定分辨率定義樣式,然後魔術般地瀏覽器根據當前窗口的分辨率來做正確的事情。您的條件加載腳本(運行動畫)需要具有解析能力,但這似乎比在頁面上交換JavaScript更好。
作爲一個例子:
<html>
<style>
@media (max-width: 700px){
#smallCage { display: block; }
#mediumCage { display: none; }
#largeCage { display: none; }
}
@media all and (min-width: 701px) and (max-width: 1000px) {
#smallCage { display: none; }
#mediumCage { display: block; }
#largeCage { display: none; }
}
@media all and (min-width: 1001px) {
#smallCage { display: none; }
#mediumCage { display: none; }
#largeCage { display: block; }
}
</style>
<body>
<div id="smallCage">
<img src="http://www.placecage.com/200/300" />
</div>
<div id="mediumCage">
<img src="http://www.placecage.com/400/600" />
</div>
<div id="largeCage">
<img src="http://www.placecage.com/800/1200" />
</div>
</body>
</html>
在本例中,我有3個不同大小的圖像,並基於所述瀏覽器的分辨率可以選擇性地呈現它們。你可以用canvas元素或者你爲JS動畫使用的任何東西做同樣的事情。
最後的選擇是讓實際執行動畫的JavaScript知道瀏覽器寬度,然後在屏幕調整大小時做正確的事情。
請描述「不工作」。 – Mathletics
它假設更改文件但不更改()腳本標記的src。 – Mtkhan
所以我做什麼加載新腳本 – Mtkhan