google-maps - Google Map 不适用于 XHTML Doctype(文档类型)

标签 google-maps xhtml cross-browser doctype

为什么在地球上总是有机会,如果我们在谷歌地图上使用“Doctype”,在正确显示谷歌地图时会出现问题?

在最近的一个案例中,这个“Doctype”只花了我 2 天的时间,没有任何生产力。多么恶心的案子?这次我得到了一位同事 (Subhankar Bannerjee) 的帮助,非常感谢他及时高效的帮助。他还提到了同样的问题,他曾多次遇到过这个问题。

谁能告诉我为什么 Google Map 会出现这个 Doctype 问题?

任何帮助是极大的赞赏。

编辑(@Balus 的评论):-
我使用的是 (X)HTML 1.0 Transitional Doctype,用于 Mozilla FF 和 Google Chrome 浏览器。我还没有在 IE v6+ 中检查过这个谷歌地图,所以我不能对那些浏览器发表评论。

最佳答案

我对 Google Maps API v3 有同样的问题不久前,我必须说调试起来并不容易。

这里的问题是,如果您不在页面上使用 DOCTYPE,则页面将以 quirks 模式呈现。基本上,这允许在没有任何额外 CSS 或 JavaScript 的情况下使用样式。在这种情况下,您可以使用此位来加载 map :

<body onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body> 

但是,使用 DOCTYPE,页面会像 DOCTYPE 所说的那样呈现。如果没有任何额外的 CSS,设置上述样式将无法工作,因为它使用百分比。该元素没有大小,因此您最终会 100% 什么都没有。因此,如果您使用的是 XHTML 1.0 Strict,即。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd">

如果您使用像素而不是百分比,页面将按原样呈现:
<body onload="initialize()">
  <div id="map_canvas" style="width:500px; height:400px"></div>
</body> 

你也可以在 CSS 中做到这一点。

所以你的选择在这里:
  • 保留 DOCTYPE 并使用像素而不是百分比 通过 CSS 指定宽度和高度。
  • 删除 DOCTYPE 并使用百分比。不建议这样做,因为文档应该总是说明应该使用什么 DTD 来呈现它。

  • 您可以从 here. 找到更多关于 Quirks 模式的信息。还有一个表格显示了不同的浏览器对缺少 DTD 的 react 。

    关于google-maps - Google Map 不适用于 XHTML Doctype(文档类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217928/

    相关文章:

    用于谷歌地图的 Angular 2 agm 库按地点 id 设置地点

    javascript - Google Maps Api 检查地点是否在路线上

    css - XHTML:将 CSS 移动到每个标记中,从 &lt;style&gt; header 到 @style 属性,例如使用 XSLT 的 "premailer",可能吗?

    html - Chrome/Firefox 边距和填充问题 : how to line these things up?

    javascript - Google map v3 折线工具提示

    android - 使用未弃用的方法在 android google maps api v2 中跟踪步行或驾驶路线

    css - 为什么 <table> 不适合布局而 <div> 适合?对于屏幕阅读器用户

    PHP/XHTML。我应该把所有东西都放在 echo 标签中吗?

    javascript - IE8 与所有其他浏览器如何处理不同的 childNode 计数

    html - CSS、(X)HTML 是严格的还是过渡的以实现跨浏览器兼容性?