Почему Диджит у меня не работает? - PullRequest
0 голосов
/ 20 февраля 2012

Вот код:

<!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>

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

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

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

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

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

1 Ответ

1 голос
/ 20 февраля 2012

1.Вы забыли потребовать 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/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...