Javascript 你为什么这么做!DOCTYPE html>中断我的脚本?

Javascript 你为什么这么做!DOCTYPE html>中断我的脚本?,javascript,html,dojo,Javascript,Html,Dojo,如果我只是简单地添加!DOCTYPE html标记使其成为HTML5文档,它会破坏脚本。拆下!DOCTYPE html标记,它可以工作。为什么? 仅供参考,我是第一次使用DOJO,并使用这个示例来熟悉它 <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <

如果我只是简单地添加!DOCTYPE html标记使其成为HTML5文档,它会破坏脚本。拆下!DOCTYPE html标记,它可以工作。为什么?

仅供参考,我是第一次使用DOJO,并使用这个示例来熟悉它

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
        <title>Web Mercator Map Type</title>
        <script type="text/javascript">
            //copy from http://gmaps-samples.googlecode.com/svn/trunk/versionchecker.html?v=2.86
            function getURLParam(name) {
              var regexS = "[\\?&]" + name + "=([^&#]*)";
              var regex = new RegExp(regexS);
              var results = regex.exec(window.location.href);
              return (results === null ? "" : decodeURIComponent(results[1]));
            }
            var gmaps_v = getURLParam('v');
            if (gmaps_v) gmaps_v = '&v='+gmaps_v;
            var script = '<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false' + gmaps_v + '"></' + 'script>';
            document.write(script);
        </script>
        <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/arcgislink/src/arcgislink.js">
        </script>
        <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/arcgislink/examples/mercator.js">
        </script>
    </head>
    <body style="margin:0px; padding:0px;">
        <div id="map_canvas" style="width:100%; height:100%">
        </div>
    </body>
</html>

您的文档没有高度,因此画布完全没有填充。我不知道省略doctype会如何影响渲染,因此我不知道为什么在没有doctype的情况下它可以工作,但通常情况下,主体从高度0开始

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
        <style type="text/css">
            html,body{
                height:100%; /* w00t */
            }
        </style>
        <title>Web Mercator Map Type</title>
        <!-- yay -->

我认为这是因为html5中关于解析document.write的更改。您正在脚本中编写脚本,在复制的部分末尾会打断脚本吗?你能告诉我们休息实际上意味着什么吗?是否有错误?如果删除,请复制粘贴代码并在浏览器中测试!DOCTYPE html标记,它可以工作。请注意,尝试使用“>”隐藏结束标记是毫无意义的,因为删除DOCTYPE会使浏览器进入怪癖模式,这会改变事情,特别是在IE中。HTML5如何打破这一点?或者:为什么这不会发生在破损的、没有doctype的文档中?@Bergi:我不知道省略doctype会引发什么怪癖。我一直认为身体的高度是0。它适用于所有情况。如今,省略doctype就像处理流沙一样。@Bergi:+1。听起来像是可行的复制品?@Bergi。。。挥舞双簧枪!