2012-02-20 4 views
0

Вот код:Почему Диджит не работает для меня?

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/resources/dojo.css"> 
    <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css"> 

    <script type="text/javascript"> 
     dojo.require("dijit.layout.AccordionContainer"); 
    </script> 

    <script type="text/css"> 
     html, body { 
      width: 100%; 
      height: 100%; 
     } 
    </script> 
</head> 

<body class='claro'> 
    <div data-dojo-type="dijit.layout.AccordionContainer" style="width: 200px; height: 95%; margin: 0 auto;"> 
     <div data-dojo-type="dijit.layout.AccordionPane" title="pane #1">accordion pane #1</div> 
     <div data-dojo-type="dijit.layout.AccordionPane" title="pane #2">accordion pane #2</div> 
     <div data-dojo-type="dijit.layout.AccordionPane" title="pane #3">accordion pane #3</div> 
    </div> 
</body> 
</html> 

Это просто очень простой код из примера додзё.

Когда я запускаю его в сафари, ничего не появляется, кроме простого текста.

Когда я запускаю его в хроме, возникает следующее сообщение об ошибке:

XMLHttpRequest cannot load http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/layout/AccordionContainer.js. Origin null is not allowed by Access-Control-Allow-Origin. 

и

Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101    dojo.js:15 

В чем проблема?

+0

Возможный дубликат http://stackoverflow.com/questions/5396527/error-origin-null-is-not-allowed-by-access-control-allow-origin-when-loading –

ответ

1

1.You забыл требовать dijit.layout.AccordionPane
2. Вы забыли вызвать парсер

Попробуйте это:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <script type="text/javascript"> 
      var dojoConfig = { 
            async : true, 
            parseOnLoad : true 
          } 
     </script> 
     <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" type="text/javascript"></script> 
     <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/resources/dojo.css"> 
     <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css"> 

     <script type="text/javascript"> 
      require(["dijit/layout/AccordionContainer", 
        "dijit/layout/AccordionPane"], 
        function(){ 
          // your code... 
        } 
      ); 
     </script> 

     <script type="text/css"> 
      html, body { 
       width: 100%; 
       height: 100%; 
      } 
     </script> 
    </head> 

    <body class='claro'> 
     <div data-dojo-type="dijit.layout.AccordionContainer" style="width: 200px; height: 95%; margin: 0 auto;"> 
      <div data-dojo-type="dijit.layout.AccordionPane" title="pane #1">accordion pane #1</div> 
      <div data-dojo-type="dijit.layout.AccordionPane" title="pane #2">accordion pane #2</div> 
      <div data-dojo-type="dijit.layout.AccordionPane" title="pane #3">accordion pane #3</div> 
     </div> 
    </body> 
</html> 

В качестве альтернативы, вместо того, чтобы вызывать парсер вручную, вы можете вызывать его при загрузке страницы, добавив data-dojo-config = "parseOnLoad: true" в тег скрипта, где загружен dojo.js, или путем установки переменной dojoConfig перед загрузкой dojo.js (см. http://dojotoolkit.org/documentation/tutorials/1.7/dojo_config/).

+0

У меня есть копия всех ваших код и запустить, он не работает. У него есть некоторая ошибка. – OammieR

+0

Попробуйте новую версию ... Я заменил ручную разборку, установив parseOnLoad = true и сделав асинхронный загрузчик модуля. – Philippe

+0

да ... Я забыл разобрать ... – HanXu

Смежные вопросы