2013-04-27 68 views
0

我在我的页面中有一个elemetn。我不控制这个页面中使用的所有javascript,并且似乎在某些地方,我的“select”元素被dojo解析并且改为dijit元素(dijit.form.select)。如何避免dojo解析元素

这个元素没有属性“data-dojo-type”,所以我不知道它为什么会被改变。

有没有办法避免dojo解析这个元素?

<tr> 
    <th scope="row"><div dojoType="dijit.InlineEditBox">Stuff</div></th> 
    <td> 
     <select> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      <option value="4">4</option> 
      <option value="5">5</option> 
     </select> 
    </td> 
</tr> 
+0

哪个Dojo的版本? – 2013-04-28 08:08:14

回答

1

我看不到您在this jsfiddle中遇到的问题。 InlineEditBox变成了dijit,但<select>没有。上面的例子可以尝试两个道场1.6.0和1.8.3道场:

HTML:

<script> 
    var dojoConfig = { 
     parseOnLoad: false 
    }; 
</script> 
<script> 
    var v16 = "https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js.uncompressed.js"; 
    var v18 = "https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"; 
    var dojoUrl = v18; 
    document.writeln("<script src='" + dojoUrl + "'></scr" + "ipt>"); 
</script> 
<table border="1"> 
    <tr> 
     <th scope="row"> 
      <div id="inlineEditBox1" dojoType="dijit.InlineEditBox">Stuff</div> 
     </th> 
     <td> 
      <select id="select1"> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
       <option value="4">4</option> 
       <option value="5">5</option> 
      </select> 
     </td> 
    </tr> 
</table> 

JS:

function dojo16ready() { 
    if (!(dojoConfig && dojoConfig.parseOnLoad)) { 
     dojo.parser.parse(); 
    } 
} 

function dojo18ready(parser, registry) { 
    function go() { 
     console.log("inlineEditBox1", registry.byId("inlineEditBox1")); 
     console.log("select1", registry.byId("select1")); 
    } 
    if (!(dojoConfig && dojoConfig.parseOnLoad)) { 
     parser.parse().then(go); 
    } 
} 

function init() { 
    console.log("dojo.version", dojo.version); 
    if ("function" !== typeof require) { 
     // Must require before onload 
     dojo.require("dijit.InlineEditBox"); 
     dojo.addOnLoad(dojo16ready); 
    } else { 
     require(["dojo/parser", "dijit/registry", "dijit/InlineEditBox"], dojo18ready); 
    } 
} 

init(); 
+0

问题在于select变成dijit,我不知道为什么,我需要一些东西来避免它继续变化。 – user2327866 2013-04-28 09:30:55

+0

我明白,我的例子没有表现出这样的问题。所以我会从比较两者开始。 – 2013-04-28 09:31:36