我使用动态脚本标记从外部域请求javascript。有时候请求会花费太长时间;如果请求花费太长时间,是否可以停止请求或超时?Javascript:“取消”动态脚本标记?
我不想使用xmlhttprequest,因为我想避免使用服务器端代理。
谢谢!
我使用动态脚本标记从外部域请求javascript。有时候请求会花费太长时间;如果请求花费太长时间,是否可以停止请求或超时?Javascript:“取消”动态脚本标记?
我不想使用xmlhttprequest,因为我想避免使用服务器端代理。
谢谢!
说到动态添加脚本有不同的方式,一种方法是在DOM准备就绪时将<script>
节点附加到文档的主体,然后在需要长时间加载时将其删除。 。
<html>
<head>
<title>bla</title>
<script type="text/javascript">
function init(){
var max_time = 2000 //in milliseconds
g_script_url = "http://yoursite.net/script.js";
var script = document.createElement("script");
script.setAttribute("src",script_url);
script.setAttribute("type","text/javascript");
document.body.appendChild(script);
g_timeout=setTimeout(function(){
var scripts = document.getElementsByTagName("script");
for (var i=0; i < scripts.length; i++){
if (scripts[i].src == script_url){
document.body.removeChild(scripts[i]);
}
}
},max_time);
}
window.addEventListener("DOMContentLoaded", init, false);
</script>
</head>
<body>bla bla [...]</body>
</html>
然后你就可以添加一个指令在动态加载脚本的末尾以清除超时:
/* end of http://yoursite.net/script.js's code */
clearTimout(g_timeout);
注:
document.addEventListener并不在IE浏览器,如果你想要一个跨平台的解决方案使用jQuery的方法$(document).ready或看看Document ready equivalent without JQuery
这似乎不起作用。我创建了一个睡眠10秒的脚本,然后将其作为脚本src返回并插入,并且不会取消请求。 – 2010-08-30 19:24:18
定义“动态脚本标签” – 2009-08-08 00:41:50
我认为他们的意思是脚本标记是本身通过现有脚本写入页面(以便即时加载新脚本)。 – Amber 2009-08-08 00:44:02
yes dav is right – rawrrrrrrrr 2009-08-08 00:49:39