Javascript 如何让脚本最后加载到网页上?
我有一个网页,上面大部分是基本的HTML。有一部分我使用JavaScript从外部源(url)加载RSS提要。问题是我的页面将加载所有内容,直到该脚本加载,等待脚本加载(有时长达几秒钟),然后加载页面的其余部分 如何强制它在首先呈现整个页面后加载脚本 我的代码是这样的:Javascript 如何让脚本最后加载到网页上?,javascript,html,rss,load,Javascript,Html,Rss,Load,我有一个网页,上面大部分是基本的HTML。有一部分我使用JavaScript从外部源(url)加载RSS提要。问题是我的页面将加载所有内容,直到该脚本加载,等待脚本加载(有时长达几秒钟),然后加载页面的其余部分 如何强制它在首先呈现整个页面后加载脚本 我的代码是这样的: <html> <more html> <script language="JavaScript" src="http://..." type="text/javascript"></sc
<html>
<more html>
<script language="JavaScript" src="http://..." type="text/javascript"></script>
<more html>
...
...
两个选项:
script
标记中包括defer
属性。请注意,defer
只能用于外部脚本文件(具有src
属性的文件)。看将脚本标记移动到末尾,它将在其他所有操作之后加载。例如:
<html>
<more html>
<more html>
<script language="JavaScript" src="http://..." type="text/javascript"></script>
</html
在pageload之后加载脚本的一种非常可靠的方法是在javascript中写出脚本本身
var theScript = document.createElement("script");
theScript.setAttribute("type","text/javascript");
theScript.setAttribute("src","//www.mysite.com/script.js");
document.getElementsByTagName("head")[0].appendChild(theScript);
您可以尝试包装调用提要的函数
jQuery(window).load(function(){
//embed RSS feed
});
强制它最后加载。将defer
属性添加到头部的脚本标记中也有效
<script language="JavaScript" src="http://..." type="text/javascript" defer></script>
将脚本放在底部,或者使用异步加载。@Cthulhu我很确定它是相反的。浏览器从上到下解析,并等待加载脚本。否则,您如何期望代码在使用它运行的库之后立即运行?浏览器不会等待图像的URL解析和加载though@Cthulhu,它们按顺序加载并阻止页面的其余部分。如果他们不这样做,另一个库所需的库可能会导致问题。例如,一个小的jQuery插件会在jQuery之前加载。你确定不需要立即使用Javascript库吗?如果没有,请在脚本上使用defer
或async
属性tag@Cthulhu,大多数情况下是这样的,因为在运行同步无差异脚本之前,解析无法继续。如果(Math.random()<0.5){document.write(“Hello,World!
),不执行脚本标记,就无法正确解析。1.我将它放在页面的某个部分,因为我希望它显示在那里。如果我将它放在底部,它将不在正确的位置。2.同时使用“延迟”和“异步”加载脚本失败。将呈现整个页面,但不显示RSS源。您的脚本是否被外部引用?是的,我有“src”拉入RSS源的url位置。你不能将输入拉入变量吗?如果你直接引用RSS,你可以使用类似的内容,然后用内容更新你选择的元素。这将允许你移动脚本标记。你能给我一个链接,指向延迟
的解释和官方文档吗介绍答案将对提问者和其他社区成员有更大的帮助。