2009-11-28 129 views
2

以下代码适用于IE8,Safari 4.0.2 - 但在Firefox 3.5.5上生成空白页面。任何想法 ?Tabcontainer的行为不同于浏览器与浏览器

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

回答

1

可能是跨域问题。夜间构建发布用于测试,但为了在本地实际使用它,您必须下载tarball。否则,引用将使用xhr + eval加载单个模块,这会破坏浏览器的域安全模型。

你的另一种选择是使用Dojo的“跨域”构建,这几乎是你想做的事情,而且超级简单的部署 - 只需使用脚本标签指向它即可。这就是Google CDN上提供的功能。

0

您可能希望将script标签放在body标签中。为了使其成为有效的HTML,它需要位于主体标签或头部标签中。无效的文档肯定会导致浏览器之间的操作不一致。

更新:另外,您可能想尝试使用生产版本而不是每晚生成。我改变了URL使用http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js,它在FF中对我来说工作得很好。它与每晚的建设打破。

HTML 4.01 Spec

一个HTML 4文档由三个部分组成:

包含HTML版本信息的线,
一个声明集管部分(由磁头元件分隔),
一个包含文档实际内容的正文。主体可以由BODY元素或FRAMESET元素实现。

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

感谢您的快速回复 但是,如果将脚本放在body标签内,行为不会发生变化。 – RooseH 2009-11-28 15:10:02

+0

只是注意到你正在使用每晚构建。你是否尝试过使用生产版本?我改变它使用谷歌CDN中的一个,它在FF中对我很好。将更新。 – tvanfosson 2009-11-28 15:27:31

+0

它现在与Firefox的作​​品 - 伟大的! – RooseH 2009-11-28 16:34:38