我有一个简单的网站,使用ajax抓取html并将其放在某个div(AjaxPlaceHolder)中。
例如,这是我的网页:
<html>
<body>
// some html...
<div id="AjaxPlaceHolder"></div>
</body>
<div id="footer"></div>
</html>
现在我的问题是,当我使用ajax获取html时,我会得到类似的内容:
<script type="text/javascript" src="js/someJsFile.js"></script>
<table>html content</table>
// more html
注意这一行:
<script type="text/javascript" src="js/someJsFile.js"></script>
我不想在浏览器下载该文件(someJsFile.js)之前放置html内容。我怎么能告诉浏览器何时下载该脚本?我知道我可以在那里放置someJsFile.js内容并将其包装在<script type="text/javascript">
标签周围但如果我可以将.js文件分开则会很好。
以下是我想要做的事情:
使用ajax获取html。不要渲染html(同时将它放在一个隐藏的div中)文件完成后下载必要的图像和脚本
答案 0 :(得分:1)
您可以将javascript文件加载与html ajax加载的其余部分分开。
如果将其分开,则可以同步加载外部脚本,这样就可以确保它们首先加载。
在简单的javascript中,您在打开时设置了Synchronous标志。
function getFile(url, passData) {
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX) {
AJAX.open("POST", url, false);
AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
AJAX.send(passData);
return AJAX.responseText;
} else {
return false;
}
}
var fileFromServer = getFile('http://domain.com/scr.js', sendThisDataAsAPost);
在jQuery中
jQuery.ajax({
type: "GET",
url: url,
async : false,
success: callback,
dataType: "script",
cache: true
});
关于同步通话:http://www.hunlock.com/blogs/Snippets:_Synchronous_AJAX
jQuery调用:http://api.jquery.com/jQuery.ajax/