动态加载外部javascript文件

时间:2010-01-04 21:20:18

标签: javascript jquery

我如何做到这一点?每次我尝试从谷歌地图加载外部javascript文件时,它都会崩溃网页并变为空白。

我使用了$ JQuery.get();功能

我正在使用JQuery将文件加载到头部。

5 个答案:

答案 0 :(得分:2)

Google地图可能会使用document.write。这解释了空白页面。这就是为什么document.write是邪恶的。

尝试将google js文件下载到磁盘并搜索document.write。如果它在那里,那么您唯一的选择是使用<script>标记正常包含它。

答案 1 :(得分:1)

jQuery没有(正确地)没有回调的跨域ajax请求。请参阅docs底部的注释。

答案 2 :(得分:0)

我认为Google Maps API在使用方面有一些限制,您需要在加载页面时链接到它,即使您没有立即使用它。您还需要最初在页面上设置目标div(并且在其正确的位置),即使它在加载时隐藏。

答案 3 :(得分:0)

这是我在我们的应用中使用的代码:

<html>
<head>
    <title>geocoder test</title>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script>
        function jsonp(src){
            var s = document.createElement("script");
            s.charset = "UTF-8";
            s.src = encodeURI(src);
            s.id = 'jsonp';
            document.body.appendChild(s);
            return s;
        };

        function showMap(json){
            var mapCanvas = document.getElementById('map_canvas'), 
                jsonp = document.getElementById('jsonp');
            if(json.Status.code !== 200){
                mapCanvas.innerHTML = 'Address not found';
                return false;
            }
            var ll = json.Placemark[0].Point.coordinates,
                latlng = new google.maps.LatLng(ll[1], ll[0]),
            myOptions = {
                zoom: 16,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            },
            map = new google.maps.Map(mapCanvas, myOptions),
            marker = new google.maps.Marker({
                position: latlng,
                map: map
            });
            jsonp.parentNode.removeChild(jsonp);
        }

        function getMap(address){
            jsonp([
                'http://maps.google.com/maps/geo?',
                'q=' + address,
                '&output=json',
                '&sensor=false',
                //'&key= ... place here your key if not on localhost ...',
                '&callback=showMap'
            ].join(''));
        }
    </script>
</head>
<body>
    <input type="text" value="gran place, brussels"/><input type="button" onclick="getMap(this.previousSibling.value)" value="Get Map"/>
    <div id="map_canvas" style="width:100%; height:450px"></div>
</body>
</html>

答案 4 :(得分:0)

jQuery有一个功能就是这样:$.getScript。例如:

$.getScript('/script.js', function()
{
    alert('Script loaded!');
});