0

我在直接从 dojo 教程复制的文件中使用了一些 CDN 链接。我不知道为什么它不起作用。当您单击 Show Me! 时应该有一个对话框!按钮,但对话框的某些部分仅在页面上可见,并且该按钮不执行任何操作。

<!DOCTYPE html>
<html >
<head>

<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.4/dijit/themes/claro/claro.css" type="text/css" rel="stylesheet" />

<script>dojoConfig = {parseOnLoad: true}</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.7.4/dojo/dojo.js"
           data-dojo-config="async: true"></script>

<script>
 require(["dijit/Dialog", "dijit/form/TextBox", "dijit/form/Button"]);
</script>
</head>
<body class="claro">
<div data-dojo-type="dijit/Dialog" data-dojo-id="myDialog" title="Name and Address">
<table class="dijitDialogPaneContentArea">
    <tr>
        <td><label for="name">Name:</label></td>
        <td><input data-dojo-type="dijit/form/TextBox" name="name" id="name"></td>
    </tr>
    <tr>
        <td><label for="address">Address:</label></td>
        <td><input data-dojo-type="dijit/form/TextBox" name="address" id="address">     </td>
    </tr>
</table>

<div class="dijitDialogPaneActionBar">
    <button data-dojo-type="dijit/form/Button" type="submit" id="ok">OK</button>
    <button data-dojo-type="dijit/form/Button" type="button" data-dojo-props="onClick:function(){myDialog.hide();}"
            id="cancel">Cancel</button>
</div>
 </div>

<button data-dojo-type="dijit/form/Button" type="button" onClick="myDialog.show();">
Show me!
</button>
</body>
</html>
4

2 回答 2

2

即使您在本地查看,也总是需要使用网络服务器。它根本不会从您的本地文件系统运行。

从 Web 服务器而不是文件系统运行您的源代码,即使 Web 服务器正在您的开发机器上运行。浏览器对来自本地文件系统的 HTTP 请求的处理比来自 Web 服务器的请求更严格,即使它在同一台机器上运行也是如此。为了获得一致的结果,您应该始终在任何 HTTP Web 服务器(Apache、nginx、Tomcat、IIS、Jetty 等)中运行 Dojo。

Lucian 关于丢失 http: 的评论,这不是问题:

您也可以从 CDN 加载 Dojo。这对于快速使用 Dojo 很有用,因为它不需要您托管自己的 Dojo 副本。您会注意到在我们的许多教程中,我们展示了无协议 URL,例如 . 这允许您在 http 和 https 应用程序中使用 Dojo,而无需调整 URL。有关更多信息,请查看 Dojo CDN 教程

参见:道场开始

于 2013-04-16T08:22:20.850 回答
0

首先,您在第二个 CDN 加载内容中缺少“http:”。然后似乎以某种方式没有加载 dijit 对话框文件......!您可以手动加载它们,或者 您可以通过加载 1.8 文件将 dojo 的版本从 1.7.4 切换到 1.8(我建议这样做),然后它应该可以工作。这是代码:

<!DOCTYPE html>
<html >
<head>

<link href="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css" type="text/css" rel="stylesheet" />

<script>dojoConfig = {parseOnLoad: true}</script>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"
           data-dojo-config="async: true"></script>

<script>
 require(["dijit/Dialog", "dijit/form/TextBox", "dijit/form/Button"]);
</script>
</head>
<body class="claro">
<div data-dojo-type="dijit/Dialog" data-dojo-id="myDialog" title="Name and Address">
<table class="dijitDialogPaneContentArea">
    <tr>
        <td><label for="name">Name:</label></td>
        <td><input data-dojo-type="dijit/form/TextBox" name="name" id="name"></td>
    </tr>
    <tr>
        <td><label for="address">Address:</label></td>
        <td><input data-dojo-type="dijit/form/TextBox" name="address" id="address">     </td>
    </tr>
</table>

<div class="dijitDialogPaneActionBar">
    <button data-dojo-type="dijit/form/Button" type="submit" id="ok">OK</button>
    <button data-dojo-type="dijit/form/Button" type="button" data-dojo-props="onClick:function(){myDialog.hide();}"
            id="cancel">Cancel</button>
</div>
 </div>

<button data-dojo-type="dijit/form/Button" type="button" onClick="myDialog.show();">
Show me!
</button>
</body>
</html>
于 2013-04-15T22:48:57.327 回答