1

我有一个简单的网站,它使用 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 中)直到文档完成下载必要的图像和脚本

4

1 回答 1

1

您可以将 javascript 文件加载与 html ajax 加载的其余部分分开。

如果你分开它,你可以同步加载外部脚本,这样你就可以确保它们首先加载。

在简单的 javascript 中,您在打开时设置同步标志。

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/

于 2012-06-09T17:25:58.130 回答