为什么google.load会导致我的页面变成空白?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

那么,这看起来很奇怪,但我无法找到解决方案。

为什么在这个世界上,这个http://jsfiddle.net/carlesso/PKkFf/显示页面内容,然后当google.load发生时,页面变为空白?

如果google.load立即完成,它会很好地工作,但如果延迟完全不起作用。

页面源代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Ciao</title>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  </head>
  <body>
    <h1>Test</h1>
    <div id="quicivanno">
      <p>ciao</p>
    </div>
  </body>
  <script type="text/javascript">
       setTimeout(function() {google.load('visualization', '1.0', {'packages':['corechart']});}, 2000);
  </script>
</html>​
提问于
用户回答回答于

看起来google.load使用document.write()将该脚本添加到页面,如果在页面加载后使用该脚本,则会清除html。

使用其中一个想法,你可以使用负载的回调来强制它使用append而不是doc.write:

setTimeout(function(){google.load('visualization', '1', {'callback':'alert("2 sec wait")', 'packages':['corechart']})}, 2000);
用户回答回答于

你只需要定义一个回调函数,并且它不会清除页面(也许旧版本的google.load()会这样做,但显然如果使用回调函数,新的版本不会)。这里是我加载“google.charts”库时的简化示例:

if(google) {
    google.load('visualization', '1.0', {
        packages: ['corechart'],
        callback: function() {
            // do stuff, if you wan't - it doesn't matter, because the page isn't blank!
        }
    } )
}

在做回调函数()时,我仍然可以看到空白页 - 但是回调函数对我来说是固定的。

扫码关注云+社区