Tabcontainer ведет себя по-разному от браузера к браузеру - PullRequest
2 голосов
/ 28 ноября 2009

Следующий код работает на IE8, Safari 4.0.2 - но генерирует пустую страницу в Firefox 3.5.5. Есть идеи?

<html>
 <head>
  <link rel="stylesheet" type="text/css" href="http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/tundra/tundra.css">
</head>
<body class="tundra">
 <div style="width: 350px; height: 300px">
  <div id="tc1-prog">
 </div>
</div>
</body>

 <script type="text/javascript" src="http://archive.dojotoolkit.org/nightly/dojotoolkit/dojo/dojo.js"
  djConfig="parseOnLoad: true">;
  </script>
  <script type="text/javascript">
    dojo.require("dijit.layout.TabContainer");
    dojo.require("dijit.layout.ContentPane");

 dojo.addOnLoad(function() {
        var tc = new dijit.layout.TabContainer({
                style: "height: 100%; width:100%;"
        },
        "tc1-prog");

        var cp1 = new dijit.layout.ContentPane({
        title: "Food",
        content: "We offer amazing food"
    });
    tc.addChild(cp1);

    var cp2 = new dijit.layout.ContentPane({
        title: "Drinks",
        content: "We are known for our drinks."
    });
    tc.addChild(cp2);

    tc.startup();
});
</script>
</html>

Ответы [ 2 ]

1 голос
/ 30 ноября 2009

Вероятно, междоменная проблема. Ночная сборка опубликована для тестирования, но чтобы использовать ее локально, вы должны загрузить tarball. В противном случае ссылки делаются на загрузку отдельных модулей с использованием xhr + eval, что нарушает модель безопасности домена браузера.

Ваш другой выбор - использовать «междоменную» сборку Dojo, которая в значительной степени является тем, что вы хотели сделать, и очень проста в развертывании - просто укажите на нее с помощью тега script и все готово. Вот что доступно в Google CDN.

0 голосов
/ 28 ноября 2009

Возможно, вы захотите поместить тег script внутри тега body. Чтобы это был действительный HTML, он должен быть либо в теге body, либо в head. Недопустимый документ может привести к тому, что он не будет работать согласованно между браузерами.

Обновление : Кроме того, вы можете попробовать использовать производственную сборку вместо ночной сборки. Я изменил URL, чтобы использовать http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js, и он работал нормально для меня в FF. Это было сломано с ночной сборкой.

Из HTML 4.01 Spec :

Документ HTML 4 состоит из трех частей:

строка, содержащая информацию о версии HTML,
раздел декларативного заголовка (ограниченный элементом HEAD),
тело, которое содержит фактическое содержание документа. Тело может быть реализовано элементом BODY или элементом FRAMESET.

<html>
<head>
  <link ... />
</head>
<body>
   ...
   <script ... >
   </script>
</body>
</html>
...