开发者

Dojo Parseonload:false Then not loading Dojo modules

开发者 https://www.devze.com 2022-12-22 04:59 出处:网络
I have some Dijit Tabs, and in those tabs I have some Dojo Text boxes and Fields.Some of my Dojo Tabs load when the page is loaded, and some load only when clicked on.

I have some Dijit Tabs, and in those tabs I have some Dojo Text boxes and Fields. Some of my Dojo Tabs load when the page is loaded, and some load only when clicked on.

My issue is that I cant get the Tabs that load only when clicked, to work with the Dojo modules.

Its hard to explain, so I made a simple example to help. I have included as much around the code that I think may have any effect on the outcome.

Index.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

  <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>

   <script type="text/javascript">
     dojo.require('dijit.layout.TabContainer');
    dojo.require('dijit.layout.ContentPane');
           dojo.require("dijit.form.DateTextBox");
   </script>

  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 

 </head>

<body class="tundra">

Works Outside of a Tab: <input class="tundra" id="outsideworking" name="outsideworking"  type="text" dojoType="dijit.form.DateTextBox"> 
<br><br><br>
 <div id="tab" dojoType="dijit.layout.TabContainer" style="width:50%;height:200px" >

 <div id="tab-working" dojoType="dijit.layout.ContentPane" selected="true" title="Loads on Page Load">
  Test working
                 <input class="tundra" id="working" name="working"  type="text" dojoType="dijit.form.DateTextBox"> 
       </div>

 <div id="tab-notworking" dojoType="dijit.layout.ContentPane" title="Load On Click" preload="false" parseOnLoad="false" href="loadafter.php">
       </div>

 <div id="tab-simplenotworking" dojoType="dijit.layout.ContentPane" title="Load On Click with Simple File" preload="false" parseOnLoad="false" href="simple.php">
       </div>

 </div>

</body>
</html>

loadafter.php

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  <meta http-equiv="X-UA-Compatible" content="chrome=1" />
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<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>
<script type="text/javascript">
        dojo.require("dijit.form.DateTextBox");
</script>

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 



</head>

<body class="tundra"开发者_如何学Python>

Outside of a Tab


  Not working here:
                 <input class="tundra" id="notworking" name="notworking"  type="text" 

    dojoType="dijit.form.DateTextBox"> 

</body>
</html>

simple.php

<input class="tundra" id="simplenotworking" name="simplenotworking"  type="text" dojoType="dijit.form.DateTextBox">

Is anyone able to help point me in the right direction?

Thanks gggggggg


In short, if you have set parseOnLoad as false, you need to parse the html fragment by yourself. And for your tab pages, if you clicked a tab, you may need to parse the tab page manually.

For example:

<div id='a'><input id="simplenotworking" name="simplenotworking" type="text" dojoType="dijit.form.DateTextBox"> </div>

You can use dojo.parser.parse(dojo.byId("a")) to render the widget.

Btw, you do not need to attach tundra class in every places of dijit widgets, it just need to be placed at the body tag,.


Try more sophisticated selector like dojo.query to pinpoint the exact Dom you want.


if you want to select a dijit for the parser you need to do it with dijit

dojo.parser.parse(dijit.byId("a"))

if you use dojo, it will select the dom node. if you use dijit it will select the widget

0

精彩评论

暂无评论...
验证码 换一张
取 消