我正在尝试将通过dojo.XHRGet检索到的某些XML附加到dijit.layout.ContentPane。在Firefox(3.6)中一切正常,但是在Chrome中,我只能在特定的ContentPane中返回“未定义”。

我的代码如下所示:

var cp = dijit.byId("mapDetailsPane");
cp.destroyDescendants(); // there are some existing Widgets/content I want to clear
                         // and replace with the new content

var xhrData = {
  url : "getsomexml.php",
  handleAs: "xml",
  preventCache: true,
  failOk: true
};

var deferred = new dojo.xhrGet(xhrData);
deferred.addCallback(function(data) {
  console.log(data.firstChild); // get a DOM object in both Firebug
                                // and Chrome Dev Tools
  cp.attr("content",data.firstChild); // get the XML appended to the doc in Firefox,
                                      // but "undefined" in Chrome
});


因为在两个浏览器中我都返回了一个有效的Document对象,所以我知道XHRGet可以正常工作,但是在内容设置方式上似乎存在某种差异。有没有更好的方法来处理请求中的返回数据?

有人要求查看我的XML,所以这是其中的一部分...

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg="http://www.w3.org/2000/svg"
 xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 version="1.1" width="672" height="1674">
 <defs>
   <style type="text/css">
     <![CDATA[ ...bunch of CSS...
     ]]>
   </style>
   <marker refX="0" refY="0" orient="auto" id="A00End" style="overflow: visible;">
   ...bunch more defs...
 </defs>
 <g id="endpoints">
   ...bunch of SVG with a some...
   <a xlink:href="javascript:gotoLogLine(16423,55);" xlink:type="simple">...more svg...</a>
 </g>
</svg>


我已经通过WC3验证器运行输出XML,以验证它是否有效。就像我之前说过的,可以在FireFox 3.6中使用。我在Safari上进行了尝试,但得到了相同的“ undefined”,因此它似乎与Webkit有关。

最佳答案

cp.containerNode.appendChild(data.firstChild)是否有效?将ContentPane视为可以接受任意XML节点的通用容器可能会问得太多。它的主要用例是-一直以来都是-注入HTML。并不是说它行不通,而是它在这个小部件中没有得到很好的探讨。

关于javascript - dojo/dijit ContentPane设置内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2402900/

10-15 07:35