0

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

这是它不起作用的页面的两个链接:

链接 1 - 项目详细信息页面

链接 2 - 项目类别页面

它们都使用相同类型的代码工作,并且直到一天前都运行良好。

上次它不起作用是因为有人没有在 lat long 坐标部分插入正确的数字类型。

这是执行此操作的代码,以防有人遇到同样的问题。请参阅下面的答案(谢谢乔纳森库恩!)

<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>
4

1 回答 1

1

我相信您正在使用运行空函数的 window.onload 覆盖通常运行初始化函数的主体 onload。查看第一个链接的源代码,就在第 69 行附近,您有:

window.onload = function() {

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

我认为这是覆盖 body 标签中的 onload 。在萤火控制台中,如果您运行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 接收到的任何参数,这些参数可能因浏览器而异,但这可以确保临时函数将获得与原始函数相同的所有参数。

于 2013-01-29T20:31:02.830 回答