Dan*_*etz 6 javascript jquery google-visualization
今天Google图表存在问题,因此如果我们无法加载js文件,我们会尝试优雅地失败.以下工作正常:
<script type="text/javascript" src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D"></script>
Run Code Online (Sandbox Code Playgroud)
问题是它会阻止运行其他代码,因为它正在等待脚本超时.
加载下面的代码,
<script type="text/javascript">
$.ajax({
url: 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D',
dataType: 'script',
cache: true, // otherwise will get fresh copy every page load
success: function() {
google.load("visualization", "1", {packages:["corechart"]});
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用诸如的可视化时,它会出错
var data = new google.visualization.DataTable();
Run Code Online (Sandbox Code Playgroud)
我正在做什么或者我们是否遇到问题,如果谷歌遇到问题,我们只需要等待js文件超时并继续前进?
谢谢!
小智 5
由于google.load成功调用该函数,因此?autoload=...这些东西是多余的。
只需将您的url更改为//www.google.com/jsapi,然后将a添加'callback'到load调用中即可确保drawChart在corechart完成代码后调用您的代码。
这是一个JSFiddle和代码段:http : //jsfiddle.net/c56pC/2/
<script type="text/javascript">
$.ajax({
url: '//www.google.com/jsapi',
dataType: 'script',
cache: true,
success: function() {
google.load('visualization', '1', {
'packages': ['corechart'],
'callback': drawChart
});
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
您的脚本一旦通过 AJAX 下载后就不会执行。你想使用$.getScript():
$.ajaxSetup({ cache: true });
var url = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D';
$.getScript(url, function() {
google.load("visualization", "1", {packages:["corechart"]});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6124 次 |
| 最近记录: |