我正在尝试将通过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/