2011-03-07 2 views
0

Я следую ExtJS tutorial и попытался создать новую страницу. Оно работает.Почему самозакрывающийся скрипт не работает для ExtJS?

<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 не определено?

ответ

3

Это не проблема ExtJS, более подробная спецификация HTML на тегах <script>. Подробнее здесь: Why don't self-closing script tags work?

+1

Я прочитал. Мне кажется, что они говорят о xhtml. Вы имеете в виду, что весь современный веб-браузер больше не позволяет закрывать тег скрипта? Если он больше не поддерживается, почему FireFox все еще пытается прочитать «ext-base.js» и не удовлетворяет требованиям «Ext.EventManager» undefined? Имеет ли смысл, что браузер полностью игнорирует мой тег скрипта? –

+0

Вероятно, это связано с тем, как браузер интерпретирует/анализирует их. Я не очень хорошо разбираюсь в технических аспектах браузеров, поэтому не могу дать точный ответ. – CincauHangus

+0

Что касается ошибки «Ext.EventManager», я иногда получаю эту ошибку с Firefox - особенно при длительной отладке, но после обновления она уходит. Вероятно, проблема с кешем/другая проблема с браузером. – CincauHangus

2
  1. Да, это плохая идея. Тег script должен иметь конечный тег, как вы можете видеть в HTML specification - The script element

  2. Различные браузеры имеют разные способы обработки неправильного кода. Каждый браузер пытается сделать все возможное, но у них разные мнения о том, что лучше в каждой ситуации. Один из способов обработки некорректного кода - игнорировать его, что, вероятно, является причиной того, что сценарий не выполняется в Firefox.

Кроме того, как вы не имеете DOCTYPE тег страницы по умолчанию HTML, а не XHTML, поэтому вы не можете использовать самозакрывающиеся теги вообще.

+0

Спасибо Guffa и спасибо VS.NET, он автоматически дает мне закрывающий '