0

このページでは、d3 で PJAX を使用して外部 html ファイルをロードする方法を示します: https://gist.github.com/mbostock/1367999

これの正確なコピーを作成しました: https://dl.dropboxusercontent.com/u/1531353/Misc/Docudocker/trialpjax/trial.html

ただし、私のバージョンは機能しません。リンクをクリックすると DOM エラーが発生します (HTML がページに読み込まれるのではなく)。Chromeコンソールを使用して、DOMエラーの原因を正確に突き止めようとしました。コピーするのを忘れたものはありますか?

4

1 に答える 1

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それぞれに を設定します。

于 2013-04-07T09:43:44.823 に答える