当async = true时,Dojo脚本不在iPad上执行

时间:2012-02-22 02:58:13

标签: ipad mobile asynchronous dojo

我有一个简单的测试页面(下面),我试图在iPad上显示。该页面只需加载几个Dojo移动模块并显示一个警告框。弹出警报框,并应用移动设备主题,每10或20页刷新一次。但是,如果我关闭异步,则每次刷新页面时都会显示警报。

Dojo的异步加载模式和我不知道的移动设备之间是否存在某些不兼容性,或者我是否以某种方式错误地构造了此代码?

我正在使用未缩小版的Dojo 1.7.1并使用Django的开发服务器提供页面。

<!DOCTYPE html>
<html lange="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" 
          content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"/> 
    <meta name="apple-mobile-web-app-capable" content="yes"/> 
    <title>Testing Stuff</title>

    <script>
      dojoConfig = {
          parseOnLoad: true,
          async: true
      };
    </script>
    <script src="/static/js/dojo/dojo.js"></script>
  </head>

  <body>
    <h1 id="heading">Mobile!</h1>
    <script>
      require(['dojox/mobile',
               'dojox/mobile/deviceTheme'], function() {
        dojo.ready(function() {
          alert('hello');
        });
      });
    </script>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

经过一番挖掘,我相信我找到了自己问题的答案。根据{{​​3}},Django开发服务器(runserver)是单线程的,因此它无法处理多个同时发出的请求。将Dojo的加载器置于异步模式会产生多个同时发出的请求,因此可能是问题的根源。

使用带有async的Dojo并不是Django开发服务器支持的用例。