2012-03-17 36 views
1

我在我的本地搜索應用程序中使用谷歌搜索JSAPI。一切工作正常,除了IE 8以外的所有瀏覽器。問題是特定的代碼行後,我的jQuery基礎對象和谷歌對象drreferenced。神祕的'對象不支持這種方法'在google.load上的IE8的錯誤

它是一個簡單直接的代碼。我能夠使用this jsfiddle重現問題。

HTML代碼

<html> 
    <head> 
     <title>Test Map</title> 
     <script src="http://www.google.com/jsapi?" type="text/javascript"></script> 

    </head> 
    <body> 
     <div id="map_canvas"></div> 
    </body> 
</html> 

和JS

$(function() { 
    alert(1); 
    google.load('search',1); 
    alert($); 

    google.setOnLoadCallback(function() {  
     alert(2); 
    }); 
}); 

google.load('search',1)後,我得到了$google以下錯誤

Error: Object doesn't support this property or method

這完全是一場噩夢。我沒有運氣好幾個小時與這個戰鬥。任何IE專家都有想法?

回答

1

更改您的jsfiddle爲「無包裝(型)」,修改你的函數是這樣的...

//$(function() { 
    //alert(1); 
    google.load('search',1); 
    alert($); 

    google.setOnLoadCallback(function() {  
     alert(2); 
    }); 
//}); 

幾乎同樣的問題在這裏問:Google is not defined using Google Visualization API; possibly jQuery's fault

+0

謝謝克里斯,現在其工作很好.. – RameshVel 2012-03-17 09:06:42

+0

歡迎您。很高興我能幫上忙。 – 2012-03-17 09:08:41

+0

@ChrisGessler請添加解釋爲什麼它不適用於您的答案的真正原因。瞭解問題以及如何調試和解決問題至關重要。 – 2012-03-17 09:10:34

1

此問題是由document.write引起Google的load API,與this question類似。該腳本被延遲,如在下面的圖片:

enter image description here

爲了解決這個問題,請包裹代碼一個onload/domready事件處理程序。

<script src="http://www.google.com/jsapi?" type="text/javascript"></script> 
<script> 
// All load-related invocations have to be placed here. 
google.load('search',1); 
google.setOnLoadCallback(function() {  
    alert(2); 
}); 
</script> 

注意的jsfiddle放置任何內容在<body>標籤內的upperleft角落。因此,JSFiddle中的代碼的簡單複製粘貼將不會顯示正確的結果。

+0

PS。 JSfiddle,我粘貼在左上角的所有代碼:http://jsfiddle.net/dgap5/4/ – 2012-03-17 09:02:32

+0

是的,現在我明白了..我應該小心,然後粘貼代碼在jsfiddle .. – RameshVel 2012-03-17 09:05:46

+0

@RameshVel JSFiddle不是問題。正如詳細解釋的那樣,真正的問題是由Google的腳本加載器造成的,它使用'document.write'。 – 2012-03-17 09:06:40

0

我也遇到了同樣的問題。這裏的解決方案。

如果你想在JQuery中使用谷歌可視化API。請按照下面的方法

<script type="text/javascript"> 
//Load the Google visualization library 
google.load("visualization", "1.1", {packages:["bar"]}); 
$(document).ready(function() { 
    google.setOnLoadCallback(function() { 
     $('#Search').click(sendAndDraw); 
    }); 

    $("#Search").click(function (e) { 
    var data = google.visualization.arrayToDataTable([ 
     ['Technology', 'Beginner', 'Intermediate', 'Expert'], 
     ['Java', 10, 40, 20], 
     ['DOT NET', 11, 46, 25], 
     ['Mainframe', 66, 11, 30], 
     ['Oracle', 10, 50, 30] 
     ]); 


    var options = { 
     chart: { 
     title: 'Management Reports', 
     subtitle: 'Classification of resources', 
     } 
    }; 

    var chart = new google.charts.Bar(document.getElementById('chart_div')); 

    chart.draw(data, options); 

}); 
相關問題