有什么方法可以在 window.onload 中设置 google onload 回调吗?

发布于 2024-11-18 22:20:30 字数 223 浏览 5 评论 0原文

这是我的代码:

window.onload = function(){
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(function(){
    alert("Message");
  });
}

有什么办法让这个代码工作吗?

here is my code:

window.onload = function(){
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(function(){
    alert("Message");
  });
}

Is there any way to let this code work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

成熟的代价 2024-11-25 22:20:30

来自谷歌文档的函数:

function loadMaps() {
  google.load("maps", "2", {"callback" : mapsLoaded});
}

它似乎有回调对象,你可以在这里分配你喜欢的任何函数。

谷歌说:

您可以加载 Google API 加载器
通过创建脚本动态地
元素并将其源设置为
相同的
“https://www.google.com/jsapi?插入您的密钥”
带有附加查询回调的 URL
范围。回调将是
当加载器准备好时执行。

Function from Google Documentation:

function loadMaps() {
  google.load("maps", "2", {"callback" : mapsLoaded});
}

It seems it has callback object and you can assign here any function you like.

Google says:

You can load the Google API loader
dynamically by creating a script
element and setting its source to the
same
"https://www.google.com/jsapi?INSERT-YOUR-KEY"
URL with an additional query callback
parameter. The callback will be
executed when the loader is ready.

寄离 2024-11-25 22:20:30

我怀疑您遇到的问题是在使用 google.load 的代码之前使用它。如果我没记错的话,该函数将一堆脚本标签注入到 DOM 中,以便检索各种 JavaScript 依赖项。如果您将使用这些依赖项的代码放在与加载相同的脚本标记中,则依赖项将尚未被处理。尝试:

<script>google.load(...);</script>
<script>
    // put the rest of your code here
</script>

看看上面的方法是否有效。您还可以尝试添加一些日志记录,以查看调用了什么(如果有)以及何时调用各个代码位(例如,您是否将 window.onload 设置得太晚了?)。

I suspect the problem you are having is the use of google.load right before the code that makes use of it. If I recall correctly, that function injects a bunch of script tags into the DOM in order to retrieve the various JavaScript dependencies. If you put the code that makes use of these dependencies in the same script tag as the load, then the dependency won't have been processed yet. Try:

<script>google.load(...);</script>
<script>
    // put the rest of your code here
</script>

And see if the above works. You might also try adding some logging to see what, if anything, gets invoked as well as when the various bits of code get invoked (e.g. did you set window.onload too late?).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文