我在我的本地搜索应用中使用谷歌搜索JSAPI。除了IE 8之外,所有浏览器都能正常工作。问题出在特定的代码行之后,我的jquery基础对象和google对象都被引用了。
它是一个直接的代码。我能够使用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)
之后我收到以下错误
Error: Object doesn't support this property or method
$
和google
。
这完全是一场噩梦。我这几个小时没有运气就打架了。这里的任何IE专家都有想法吗?
答案 0 :(得分:1)
将你的jsFiddle改为“No wrap(body)”并修改你的函数......
//$(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
答案 1 :(得分:1)
此问题是由Google document.write
API中的load
引起的,类似于this question。脚本被推迟,如下图所示:
要解决此问题,请不将代码包装在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>
标记的左上角。因此,JSFiddle中代码的简单复制粘贴将无法显示正确的结果。
答案 2 :(得分:0)
我遇到了同样的问题。这是决议。
如果你想在JQuery中使用google visualization 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);
});