我正在尝试加载具有$.getScript获取Google Map脚本功能的两个脚本,然后在加载后,我获得另一个脚本(goMap),该脚本使Map applet易于制作。
$.getScript
goMap
但是,加载后,获取Google Map API的第一个脚本很好,然后第二个脚本返回解析错误并显示以下内容:
TypeError:’undefined’不是构造函数’
但是,我不知道从哪里引用或从哪一行引用,我认为它一定是试图在此文件上执行Geocoder((function($){:之后的第一行:
(function($){
http://www.pittss.lv/jquery/gomap/js/jquery.gomap-1.3.2.js
这是我的代码:
$.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function() { $.getScript('../js/gomap.js').done(function() { // this never gets called alert('gomap loaded'); }).fail(function(jqxhr, settings, exception) { alert(exception); // this gets shown }); }).fail(function() { alert('failed to load google maps'); });
我尝试将AJAX设置更改async为false,但完全没有帮助。
async
false
该错误是由以下事实引起的:希望使用可以将Google Maps API加载到头部<script src="http://maps.google.com/maps/api/js?sensor=true"></script>。
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
如果您由于某种原因不能做到这一点,那么仍然有希望。Google Maps API不起作用,因为它用于document.write在页面中注入依赖项。要使代码正常工作,您可以覆盖本机document.write方法。
document.write
演示:http://jsfiddle.net/ZmtMr/
var doc_write = document.write; // Remember original method; document.write = function(s) {$(s).appendTo('body')}; $.getScript('http://maps.google.com/maps/api/js?sensor=true').done(function() { $.getScript('../js/gomap.js').done(function() { alert('gomap loaded'); document.write = doc_write; // Restore method }).fail(function(jqxhr, settings, exception) { alert(exception); // this gets shown document.write = doc_write; // Restore method }); }).fail(function() { alert('failed to load google maps'); });