谷歌地图消失了

时间:2013-01-29 20:20:14

标签: api google-maps

我在我们的网站上遇到了一个问题,就在几天前谷歌地图不再显示了。

以下是指向不起作用的网页的两个链接:

link 1 - 项目详情页面

link 2 - 项目类别页面

它们都使用相同类型的代码,并且在一天前工作得很好。

上次无效是因为有人没有在lat长坐标部分插入正确的数字类型。

如果有人遇到同样的问题,这是代码。请参阅下面的答案(谢谢Jonathan Kuhn!)

<script type="text/javascript">
  Shadowbox.init({
    // let's skip the automatic setup because we don't have any
    // properly configured link elements on the page
    skipSetup: true
  });
  <?php
    session_start();
    if (empty($_SESSION['count'])) {
      $_SESSION['count'] = 1;
    }
    else {
      $_SESSION['count']++;
    }
  ?>
  window.onload = function() {
  // open a welcome message as soon as the window loads
  <?php
    if ($_SESSION['count'] == 1) {
  ?>
  Shadowbox.open({
    content:    '<div id="welcome-msg"><p style="padding:4px 30px; margin:4px; color:#fff;">Awesome stories, photos, news, and more on our projects, straight to your inbox.</p><p style="padding:4px 30px; margin:4px; color:#fff;">Enter your e-mail and click Submit to join.</p><form method="post" name="newsletter" action="include/newsletter_submit.php" onsubmit="return validateForm_newsletter()" style="padding:10px 30px;"><input type="text" name="email_address" class="newsletter_textbox"> <input type="submit" name="button" class="newsletter_button" value="Submit" style="margin-top:10px;"><p style="padding:18px 15px; margin:4px; color:#fff;">You can also enter your e-mail at the bottom of our homepage.</p></form></div>',
    player:     "html",
    title:      "Get our friendly updates!",
    height:     250,
    width:      350
  });
<?php } ?>
};
</script>

1 个答案:

答案 0 :(得分:1)

我相信你正在覆盖通常运行初始化函数的body onload,其中window.onload运行一个空函数。查看第一个链接的来源,在第69行左​​右,您有:

window.onload = function() {

    // open a welcome message as soon as the window loads
};

我认为它会覆盖body标签中的onload。在firebug控制台中,如果你运行document.body.onload.toString(),它会显示空函数,注释和所有。


编辑以添加示例包装函数:

//make a temporary empty function
var tmp=function(){};
//check if there is an onload function already
if(window.onload && typeof window.onload == 'function'){
    //make tmp the onload function
    tmp=window.onload;
}
window.onload=function(){
    //call the original onload function
    tmp.apply(this, arguments);

    //do something else for shadowbox
}

基本上我所做的就是检查是否已经存在window.onload,如果存在,则将该函数保存到临时变量中。然后分配一个调用temp函数的新window.onload。我使用Function.apply传入window.onload接收的任何参数,这些参数可能因浏览器而异,但这可以确保temp函数将获得原始函数所能获得的所有相同参数。