使用async属性时Javascript不工作:Highcharts

使用async属性时Javascript不工作:Highcharts,javascript,asynchronous,highcharts,google-pagespeed,Javascript,Asynchronous,Highcharts,Google Pagespeed,我正在努力加快我的页面速度。但问题是,我认为Highcharts js可能会让我的网站变慢 我在标题中包含了Highchart的JS,因为我需要更早地执行脚本,以便加载Highchart的映射。 但我认为这个过程对我的页面速度影响很大 我被要求对js进行延迟解析,所以我所做的是在脚本标记中添加了一个异步属性,但在添加了异步属性之后,我的映射停止显示 我的脚本标签是这样的 <script async src="assets/js/jquery.min.js"></script&g

我正在努力加快我的页面速度。但问题是,我认为Highcharts js可能会让我的网站变慢

我在标题中包含了Highchart的JS,因为我需要更早地执行脚本,以便加载Highchart的映射。 但我认为这个过程对我的页面速度影响很大

我被要求对js进行延迟解析,所以我所做的是在脚本标记中添加了一个异步属性,但在添加了异步属性之后,我的映射停止显示

我的脚本标签是这样的

<script async src="assets/js/jquery.min.js"></script>
<script async src="assets/js/script.min.js"></script>
<script async type="text/javascript" src="assets/js/jquery-3.3.1.js"></script>
<script async src="js/highcharts/highstocks.js"></script>
<script async src="js/highcharts/mapmodulesdata.js"></script>
<script async src="js/highcharts/mapmodulesexporting.js"></script>
<script async src="js/highcharts/map-export-data.js"></script>
<script async src="js/highcharts/map.js"></script>
<script async src="js/highcharts/worldmap.js"></script>


如果我缺少某些内容,请更正我加载这些脚本然后调用Highcharts的正确方法应该是这样的:

<header>
<!-- remove all scripts from here -->
</header>
<body>
...

<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/script.min.js"></script>
<script type="text/javascript" src="assets/js/jquery-3.3.1.js"></script>
<script src="js/highcharts/highstocks.js"></script>
<script src="js/highcharts/mapmodulesdata.js"></script>
<script src="js/highcharts/mapmodulesexporting.js"></script>
<script src="js/highcharts/map-export-data.js"></script>
<script src="js/highcharts/map.js"></script>
<script src="js/highcharts/worldmap.js"></script>

<script>
(function() {
  // Now in this function you can add Highcharts call
})();
</script>
</body>

...
(功能(){
//现在,在这个函数中,您可以添加Highcharts调用
})();

只有在dom中加载“Highcharts.js”之后,才需要调用Highcharts API,您可以按照下面的示例进行操作:

var script=document.getElementById(“script1”);
script.onload=function(){
后加载()
}
功能后载(){
Highcharts.chart('容器'{
标题:{
正文:“2010-2016年太阳能行业就业增长”
},
副标题:{
文本:“来源:thesolarfoundation.com”
},
亚克斯:{
标题:{
文本:“员工人数”
}
},
图例:{
布局:“垂直”,
对齐:“右”,
垂直排列:“中间”
},
打印选项:{
系列:{
标签:{
允许的连接器:false
},
起点:2010年
}
},
系列:[{
名称:'安装',
数据:[4394352503571776965897031119931137133154175]
}, {
名称:“制造业”,
数据:[24916、24064、29742、29851、32490、30282、38121、40434]
}, {
名称:“销售与分销”,
数据:[117441772216051977120185243773214739387]
}, {
名称:“项目开发”,
数据:[null,null,798812169151121522440034227]
}, {
名称:'其他',
数据:[129085948810511248898918161827418111]
}],
响应:{
规则:[{
条件:{
最大宽度:500
},
图表选项:{
图例:{
布局:“水平”,
对齐:'居中',
垂直排列:“底部”
}
}
}]
}
});
}
#容器{
最小宽度:310px;
最大宽度:800px;
高度:400px;
保证金:0自动
}

执行完所有脚本后,您需要创建一个图表<代码>窗口。onload也会等待异步脚本,因此您可以使用它:

window.onload = function() {
    Highcharts.mapChart('container', {...});
}
现场演示:


文档:

async
异步加载脚本,这会导致脚本执行顺序发生变化。试着推迟而不是推迟@AswinKumarI有同样的问题我不太了解HighChart,但我在这里看到的一个问题是,您已经从HighChart中包含了6个不同的脚本,因此您的网站将与服务器建立6个不同的连接以下载脚本我相信HIghScript必须在一个包中提供所有这些脚本,这个改变肯定会提高你网站的速度,因为我在标题中使用了脚本。当我调用外部php文件来加载数据时。如果他们有其他方法让脚本工作。请建议。非常感谢你的帮助