Вкладки dojo сначала отображаются как обычные элементы div, а затем внезапно переходят в формат вкладок.

Я использую вкладки додзё в файле php. Когда php-файл впервые записывается в браузер, вкладки отображаются как обычные div в большом беспорядке. Затем, через секунду, они хорошо фиксируются в виде вкладок. Прошло много времени с тех пор, как я изучал dojo, и в то время, когда он был написан, он использовал 1.6, используя ссылки на онлайн-версии dojo.

Есть ли какая-то причина, по которой это могло бы произойти. Что-то не готово или что-то не загружено первым?

PHP-код повторяет этот HTML:

<div dojoType='dijit.layout.TabContainer'><div dojoType='dijit.layout.ContentPane' title='Words' selected='true'>some html</div></div>...etc

У меня есть этот javascript в заголовке файла php, чтобы повторить этот HTML в первую очередь.

<script src='http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js' djConfig='parseOnLoad: true'></script><script>dojo.require('dijit.Tooltip');dojo.require('dijit.layout.TabContainer');dojo.require('dijit.layout.ContentPane');</script><link rel='stylesheet' type='text/css' href='http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css'/>;

1 ответ

Я только что столкнулся с точно такой же проблемой и предложил следующий обходной путь. в <head> раздел моего макета (layout.phtml - я использую Zend Framework 1.12), я добавил следующую функцию JavaScript

<script type="text/javascript" language="JavaScript">
    function pageLoaded() {
        document.getElementById("body-loading").style.display = "none";
        document.getElementById("body-content").style.visibility = "visible";
        dojo.style("view-content", "visibility", "visible");
    }
</script>

и подправил <body> раздел с onLoad атрибут и пара <div>s

<body class="<?php echo $dijit_theme ?>" onLoad="Javascript:pageLoaded();">
<div id="body-loading" style="visibility: visible;">loading...</div>
<div id="body-content" style="visibility: hidden;"> 
<?php echo $this->layout()->content ?>
</div>
</body>

Таким образом, я вижу текст "loading..." до тех пор, пока материал Dojo не будет полностью отрисован, затем сообщение "loading..." исчезнет и появится форма.

Я проверил это на удаленном сервере с довольно медленным интернет-соединением, и это похоже на работу. Тем не менее, я только начинаю с Dojo, поэтому буду очень признателен за любые советы, если есть лучший способ справиться с этой проблемой.

Другие вопросы по тегам