有没有办法在页面加载后加载 JavaScript 代码(不把它放在 HTML 文档的最底线)?这是脚本示例:
<script type="text/javascript" src="http://www.flickr.com/badge_code_v2.gne?count=10&display=latest&size=t&layout=x&source=user&user=XXX"></script>
PS。原因是上面的 Flickr 代码加载缓慢并同时挂起网站。
有没有办法在页面加载后加载 JavaScript 代码(不把它放在 HTML 文档的最底线)?这是脚本示例:
<script type="text/javascript" src="http://www.flickr.com/badge_code_v2.gne?count=10&display=latest&size=t&layout=x&source=user&user=XXX"></script>
PS。原因是上面的 Flickr 代码加载缓慢并同时挂起网站。
如果您想在整个页面(包括所有元素)完成加载后加载脚本,请尝试此操作。(jQuery)
$(window).load(function() {
var js,
id = 'SCRIPT-ID',
ref = document.getElementsByTagName('script')[0];
if (document.getElementById(id)) {
return;
}
js = document.createElement('script');
js.id = id;
js.async = true;
js.src = "http://www.website.com/script.js";
ref.parentNode.insertBefore(js, ref);
});
如果您希望它在 DOM 渲染后加载,只需更改$(window)
为$(document)
你可以试试
<script type="text/javascript">
// Use any event to append the code
$(document).ready(function()
{
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "test.js";
// Use any selector
$("head").append(s);
});
</script>
当然,这将需要 jquery 库,否则您可以将此代码粘贴到 body 的 onload 方法上
嗯,这是有用的东西
http://bugs.jquery.com/ticket/6557
或者你可以试试
将其应用于 body 的 onload 方法。
var asyncLoad = function (url) {
if (typeof url !== 'string') {
return false;
}
var script = document.createElement('script'),
firstScript = document.getElementsByTagName('script')[0];
script.setAttribute('src', url);
firstScript.parentNode.insertBefore(script, firstScript);
return script;
};
// 或者,对于无脚本页面,只需添加到头部;
var asyncLoad = function (url) {
if (typeof url !== 'string') {
return false;
}
var script = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
script.setAttribute('src', url);
head.appendChild(script);
return script;
};
// 申请:
document.addEventListener('DOMContentLoaded', function () {
asyncLoad('script_url');
});
如果您需要模块化执行脚本,您可以使用以下库