如果您确实想要在页面加载后将脚本添加到页面中,则以下代码将起作用:
(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