Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript之前加载图像_Javascript_Html_Performance_Perception - Fatal编程技术网

如何在javascript之前加载图像

如何在javascript之前加载图像,javascript,html,performance,perception,Javascript,Html,Performance,Perception,我目前希望通过确保在javascript之前下载公司徽标来改善对web应用程序的感知 为此,我将javascript引用移动到公司徽标的img元素下面 例如: <img src="/Images/Logo.jpg" alt="My Company"/> <script type="/Scripts/MyScripts.js"></script> 当查看Google Chrome开发者工具时,我可以看到对该徽标的调用已经发出,但是在页面上的所有javasc

我目前希望通过确保在javascript之前下载公司徽标来改善对web应用程序的感知

为此,我将javascript引用移动到公司徽标的
img
元素下面

例如:

<img src="/Images/Logo.jpg" alt="My Company"/>
<script type="/Scripts/MyScripts.js"></script>

当查看Google Chrome开发者工具时,我可以看到对该徽标的调用已经发出,但是在页面上的所有javascript都被下载之前,它仍然处于“待定”状态

为什么会这样?如何确保在javascript之前加载公司徽标?

尝试使用
$(窗口)。如果使用jQuery,请为脚本加载

$( window).load(function() {
    //put js code here
});
根据报告:

当完成页面时,窗口加载事件稍后执行 完全加载,包括所有帧、对象和图像。所以 应放置与图像或其他页面内容有关的函数 在窗口或内容标记本身的加载事件中

对于必须使用
添加到站点的单独文件,我建议使用
$.getScript

$.getScript("path/to/file");

这是
$。在HTML标记解析过程中,一旦出现JS文件,getScript
浏览器就必须下载并执行JS文件(至少由于可能使用
文档。在脚本中写入

最好的解决方案之一是添加
onload
事件处理程序,在页面准备就绪时动态加载脚本:

<script type="text/javascript">
window.addEventListener("load",function () {
    var elem = document.createElement("script");
    element.src = "file.js";
    document.body.appendChild(element);
, false);
</script>

addEventListener(“加载”,函数(){
var elem=document.createElement(“脚本”);
element.src=“file.js”;
document.body.appendChild(元素);
,假);

谢谢马克,你是否建议我将所有javascript引用移动到窗口加载触发器中的javascript调用中?@Curt,是的,用于页面脚本。如果你还希望从单独文件导入的其他javascript文件在加载后加载,那么我建议使用
$.getScript
。我将其编辑到我的问题中。
HTML标记过程中一旦出现图像,我的图像就会在脚本上方定义。为什么不先下载此图像?浏览器在构建整个DOM后会加载资源,但JS会阻止DOM构建。即使现代浏览器在标记中遇到图像时会立即请求图像(出于性能原因)当遇到脚本标记时,即执行脚本,然后才构建(和呈现)DOM,则会暂停DOM构建。