【问题标题】:Loading javascript in a Dojo ContentPane在 Dojo ContentPane 中加载 javascript
【发布时间】:2010-03-04 06:39:06
【问题描述】:

我又卡住了。我正在尝试将一些 javascript(数字微调器)加载到 Dojo 内容窗格中。我收到了一条漂亮的丑陋信息:

Message: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)

这是我的代码。有什么想法吗?

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 
<link rel="stylesheet" href="numberspinner.css" type="text/css" media="screen" />
<script type="text/javascript" src="numberspinner.js"></script>

<script type="text/javascript">
var init = function()
{ dojo.require('dijit.layout.ContentPane');
}
dojo.addOnLoad(init);
</script>

</head>

<body class="tundra">


<div id="notworkingtab" dojoType="dijit.layout.ContentPane" title="Location">

<script type="text/javascript">
var abc= new SpinControl();
abc.SetMaxValue(5);
abc.SetMinValue(0);
abc.SetCurrentValue(0);
abc.SetIncrement(0.5);
document.body.appendChild(abc.GetContainer());
abc.StartListening();
</script>

</div></div>

</body>
</html>

如果有人关心,我从这里得到了我的 numberspinner: http://www.switchonthecode.com/tutorials/javascript-controls-the-spin-control

它显示了数字微调器,但没有显示内容窗格,我收到上面的错误...如果我将数字微调器取出,内容窗格工作正常。或者,如果我取出内容窗格,数字微调器工作正常。

谢谢 呸呸呸

【问题讨论】:

    标签: javascript dojo


    【解决方案1】:

    我认为dojox.layout.ContentPane 小部件正是您要寻找的。​​p>

    dojox.layout.ContentPanedijit.layout.ContentPane 的扩展,提供脚本执行等功能。

    【讨论】:

      【解决方案2】:

      我想我对您的评论/答案是您是否正在尝试做这种“非”道场之类的事情。基本上,通过做你正在做的事情,你最终会得到一个非常不像 dojo 的应用程序。

      如果本机 dijit 或 dojox 控件不提供您想要的功能,您最好自己将数字微调器包装为 dijit 小部件。你会得到很多好处,比如dijit.layout.ContentPane“拥有”子控件并会自动管理它等等。起初我认为创建自定义小部件会令人生畏,但最终,它一点也不难。

      另外,dijit.layout.ContentPane 通常不允许在加载时运行 JavaScript,因为解析器会忽略它。您可以使用dojox.layout.ContentPane 来提供此功能,但随着时间的推移,我了解到通常我想做的事情可以通过&lt;script type="dojo/method"&gt;&lt;script type="dojo/connect"&gt; 来完成。

      我个人认为,从长远来看,您会更满意结果。

      【讨论】:

      • 感谢您的评论,我会看看,看看我能学到什么。
      • +1 用于 dojox.layout.ContentPane 推荐。我之前在寻找解决方案时浏览了您的答案,但一定错过了。在 contentPane 不加载脚本等方面存在与 OP 类似的问题。使用 dojox.layout.ContentPane 而不是 dijit.layout.ContentPane 有效。
      【解决方案3】:

      对于任何感兴趣的人,我都知道了.. 金发碧眼的时刻。

      document.getElementById("myDiv").appendChild(starrating.GetContainer());

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多