代码之家  ›  专栏  ›  技术社区  ›  Phil

无法加载自定义Dojo模块

  •  0
  • Phil  · 技术社区  · 15 年前

    我正在尝试按照自定义模块教程 http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/modules-and-namespaces/creating-your-own-modul

    我在当地部署了Dojo http://localhost:8081/dojo-1.3.2/dojo/dojo.js 对于我的自定义模块,我创建了以下javascript文件: http://localhost:8081/dojo-1.3.2/explosive/space/Modulator.js :

    dojo.provide("explosive.space.Modulator");
    dojo.declare("explosive.space.Modulator",null,{
    bob:1
    });
    

    在我的HTML页面中,我有以下内容:

    <script type="text/javascript" src="http://localhost:8081/dojo-1.3.2/dojo/dojo.js"></script>
    <script type="text/javascript">
    dojo.require("explosive.space.Modulator");
    </script>
    

    当我在Firefox中打开我的站点时,我会得到错误:

    错误:无法加载 ‘爆炸性空间调制器’;最后一个 尝试 './爆炸/空间/调制器.js'

    我做错了什么有什么想法吗?

    编辑:经过更多的测试,代码可以在IE8和IE8兼容模式下工作,但不能在Firefox、Chrome或Opera中工作。

    edit2:我的HTML文件在另一个域上,但我不认为这会有什么不同。看完赛斯的评论后(谢谢赛斯!)我都试过了。

    我有两个Tomcat实例,一个在端口8080上,一个在端口8081上。我在这两个实例中都放置了index.htm并启动了它们。

    http://localhost:8081/test/index.htm 在FF和IE中工作。 http://localhost:8080/test/index.htm 在FF中不按预期工作,但在IE中工作。

    show xmlhttprequests显示FF正在调用“get” http://localhost:8081/dojo-1.3.2/explosive/space/modulator.js(本地主机:8081/dojo-1.3.2/explosive/space/modulator.js) “出于某种原因,这是一个空洞的回应。

    这是我的index.htm代码的全部内容,如果有帮助的话。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=7" />
        <title>Create Map</title>
        <script type="text/javascript" src="http://localhost:8081/dojo-1.3.2/dojo/dojo.js"></script>
        <script type="text/javascript">
          dojo.require("explosive.space.Modulator");
    
          function init(){
              var eludiumFuel36 = new explosive.space.Modulator();
              alert(eludiumFuel36.bob);
          }
    
          dojo.addOnLoad(init);
        </script>
      </head>
      <body class="tundra">
        <h1>Hello World!</h1>
      </body>
    </html>
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   seth    15 年前

    从你这里的情况看还可以。当你翻页时,你要 http://localhost:8081/testpage.html (或者其他什么)?或者你要去一个不同的领域?

    你有 firebug 安装?如果没有,请安装它并打开“show xmlhttprequests”。这将显示它试图在控制台中访问的URL(以及任何其他可能相关的错误)。

    否则,页面上可能会有一些其他内容,而这些内容与Dojo的加载路径不符。

    编辑

    当dojo执行dojo.require时,它会对文件执行xhr调用。其中包括主机和端口。因此,当HTML页面位于localhost:8081上,而javascript位于localhost:8080上时,这违反了跨域安全性。你可以通过使用 cross-domain build version 文件(或确保所有请求都在同一端口和主机上)。说实话,我不太清楚为什么我在不同的港口工作。