此页面演示了如何在d3中使用PJAX加载外部html文件: https://gist.github.com/mbostock/1367999
我已经准确地复制了这个: https://dl.dropboxusercontent.com/u/1531353/Misc/Docudocker/trialpjax/trial.html
但是,我的版本无效。当我点击一个链接(而不是将html加载到页面上)时,我收到一个DOM错误。我试图使用Chrome控制台找出导致DOM错误的确切原因无效。有什么我忘记复制的吗?
答案 0 :(得分:1)
加载pjax("ul li a", "#main");
时,content
变量设置为“#main”
所以,在这个函数中:
function load(href) {
d3.html(href, function(fragment) {
var target = d3.select(content).node();
target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);
pjax(links, content); // reapply
});
}
在行中:
target.parentNode.replaceChild(d3.select(fragment).select(content).node(), target);
它正在查找已加载的文档片段中#main
的内容。
但是,在您的情况下,没有#main
因此它被设置为null。当您尝试使用null调用replaceChild时,您将收到您遇到的错误。
要解决此问题,请将其他页面设置为完成,每个页面都加#main
。