为什么自动关闭脚本不适用于ExtJS?

时间:2011-03-07 07:02:17

标签: javascript html extjs

我正在关注ExtJS tutorial并尝试创建新页面。它有效。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title id='title'>HTML Page setup Tutorial</title>

        <!-- ** CSS ** -->
        <!-- base library -->
        <link rel="stylesheet" type="text/css" href="ext-3.3.1/resources/css/ext-all.css" />

        <!-- overrides to base library -->


        <!-- ** Javascript ** -->
        <!-- ExtJS library: base/adapter -->
        <script type="text/javascript" src="ext-3.3.1/adapter/ext/ext-base.js"></script>
        <!-- ExtJS library: all widgets -->
        <script type="text/javascript" src="ext-3.3.1/ext-all-debug.js"></script>


        <!-- overrides to library -->

        <!-- extensions -->

        <!-- page specific -->

        <script type="text/javascript">
            // Path to the blank image should point to a valid location on your server
            Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif';

            Ext.onReady(function () {

                console.info('woohoo!!!');

            }); //end onReady
        </script>

    </head>
    <body>
    </body>
</html>

但是,如果我将脚本标记行更改为使用自闭标记,如下所示,则不起作用。

<!-- ExtJS library: base/adapter -->
<script type="text/javascript" src="ext-3.3.1/adapter/ext/ext-base.js"/>

在Firebug中,它抱怨Ext.EventManager is undefined。我有两个问题

  1. 对脚本使用自动关闭标记通常是个坏主意吗?我已经阅读了这个post,但听起来我在谈论xhtml。

  2. 我正在尝试学习Javascript。虽然我知道修复它的方法是不使用自闭标签,但我仍然想知道为什么FireFox认为Ext.EventManager未定义?

2 个答案:

答案 0 :(得分:3)

这不是ExtJS问题,更多是<script>标签上的HTML规范。在这里阅读更多: Why don't self-closing script tags work?

答案 1 :(得分:2)

  1. 是的,这是一个坏主意。脚本标记需要一个结束标记,您可以在HTML specification - The script element

  2. 中看到
  3. 不同的浏览器有不同的处理错误代码的方法。每个浏览器都试图充分利用这种情况,但他们对每种情况下的最佳情况有不同的看法。处理一些错误代码的一种方法是忽略它,这可能就是为什么脚本没有在Firefox中执行的原因。

  4. 此外,由于您没有doctype标签,因此页面默认为HTML,而不是XHTML,因此您根本无法使用自动关闭标签。