为什么在1.8版本中,相同的2个jsfiddle会导致不同的dojo布局



我正在将一些dojo 1.6代码迁移到dojo 1.8,但我无法使布局表现相同。所以我把代码精简到最低限度,希望能解决这个问题,最后得到了两个相同的jsfiddle。我把代码从一个复制到另一个。。。然而其中一个导致了分裂的dojo ContentPanes,而另一个没有。

示例#1(布局工程):http://jsfiddle.net/mmlitvin/3onan361/17/

示例#2(布局不起作用):http://jsfiddle.net/mmlitvin/Lt0a2fhd/

HTML

<body class="claro">
<div data-dojo-type="dijit.layout.BorderContainer" id="mainBC">  
    <div data-dojo-type="dijit.layout.BorderContainer" id="splitBC" data-dojo-props="region:'center'">
        <div data-dojo-type="dijit.layout.ContentPane" id="topPane" data-dojo-props="region:'top'">SQL Statement and details</div>
        <div data-dojo-type="dijit.layout.ContentPane" id="leftPane" data-dojo-props="region:'center'">Left Pane</div>
        <div data-dojo-type="dijit.layout.ContentPane" id="rightPane" data-dojo-props="region:'right',splitter:'true',minSize:1" style="width:50%;">Right Pane</div>
    </div>
</div>

Javascript

debugger;
dojo.require('dojo.parser');
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.Dialog");

CSS

#mainBC {
height:600px;
}
#topPane {
height: 15px;
border:none;
padding:0px;

}

它们不完全相同。如果单击左侧菜单中的Fiddle Options,您会注意到工作的JSFiddle在Framework <script> attribute中包含djConfig="parseOnLoad:true",而另一个则不包含。

JSFiddle文档对此属性进行了以下说明:

Framework <script> attribute:
    An ability to add special attributes to the script tag loading the framework. 
    That would result with <script type="text/javascript" src="/js/lib/someframework.js" {attributes}></script>

这意味着当页面在您的第二个JSFiddle中加载时,dojo/parser没有运行。在实际的代码中,只需将djConfig="parseOnLoad:true添加到<script>标记中即可。

最新更新