我遇到了与这个问题中相同的错误,但没有答案。具体来说,我正在尝试在我的代码中加载这个演示。我稍微修改了它,我不会将他们的代码包含在任何头标签中——这个特定的代码片段将由jQuery加载。无论如何,我的代码看起来像这样:
<script type='text/javascript'
src='https://www.google.com/jsapi?key=ABQIAAAAKl2DNx3pM....'>
</script>
<script type='text/javascript'>
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', '', 'Country');
data.addColumn('number', 'Population (mil)', 'a');
data.addColumn('number', 'Area (km2)', 'b');
data.addRows(5);
data.setValue(0, 0, 'CN');
data.setValue(0, 1, 1324);
data.setValue(0, 2, 9640821);
data.setValue(1, 0, 'IN');
data.setValue(1, 1, 1133);
/* ... */
var chart = new google.visualization.IntensityMap(
document.getElementById('chart_div'));
chart.draw(data, {});
}
$(document).ready(function() {
google.load('visualization', '1', {packages:['intensitymap']});
google.setOnLoadCallback(drawChart);
});
</script>
这段代码位于一个div中,其可见性根据需要进行切换。整个页面(此处指整个网页)作为ajax调用的结果返回。
理论上,使用jQuery的$(document).ready()处理程序意味着当文档准备就绪时应加载google。
然而,我得到了以下结果: 无论该部分是否在
ready()
内。现在问题来了:在dom浏览器中,我可以找到该对象:
请问有人能够首先解释一下为什么会出现这种情况,然后告诉我如何修复它吗?
作为一个天真的JavaScript开发者,我尝试在head标签中包含Google脚本。这导致类似于this question($未定义)的东西出现,除了我们不是从Google加载jQuery,而是在本地托管它。
我们成功地以这种方式内联加载了许多其他jQuery扩展以及额外的jQuery代码部分,所以在我看来应该可以工作。我不知道jQuery是否妨碍了Google/反之亦然,但它们不应该这样做。
你有什么想法吗?
<head>
标签中,就像你说的那样,我不需要使用$(document).ready()
。给你打个勾。 - user257111document.write
来动态加载脚本。当它被延迟,无论是使用load/domready事件还是使用setTimeout
,当前文档都将被覆盖,从而破坏您的代码 - 相关答案。 - Rob W