Javascript Google 放置 API 库未动态加载
Javascript Google Place API library not getting loaded dynamically
我的javascript代码
var script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?libraries=places';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
script.onload = function(){
var autocomplete;
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')),
{ types: ['geocode'] });
我收到这个错误
Cannot read property 'Autocomplete' of undefined
at HTMLScriptElement.script.onload (mabapamavo.js:18:40)
当我使用脚本标签加载库时,上面的相同代码有效。但是我想使用 Javascript.
动态加载库
我犯了什么错误?
错误消息告诉您 google.maps.places
未定义。如 in the documentation 所述,您应该使用初始化回调,而不是使用 script.onload
。
您的代码应如下所示:
var script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?libraries=places&callback=initialize';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
initialize = function() {
var autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')), {
types: ['geocode']
});
当您异步加载地图 API 时,您不使用 onload
事件处理程序。相反,您在加载 API 的 URL 中传递回调函数的名称。关注 this example 就可以了。
我的javascript代码
var script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?libraries=places';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
script.onload = function(){
var autocomplete;
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')),
{ types: ['geocode'] });
我收到这个错误
Cannot read property 'Autocomplete' of undefined
at HTMLScriptElement.script.onload (mabapamavo.js:18:40)
当我使用脚本标签加载库时,上面的相同代码有效。但是我想使用 Javascript.
动态加载库我犯了什么错误?
错误消息告诉您 google.maps.places
未定义。如 in the documentation 所述,您应该使用初始化回调,而不是使用 script.onload
。
您的代码应如下所示:
var script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?libraries=places&callback=initialize';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
initialize = function() {
var autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')), {
types: ['geocode']
});
当您异步加载地图 API 时,您不使用 onload
事件处理程序。相反,您在加载 API 的 URL 中传递回调函数的名称。关注 this example 就可以了。