スクリプトタグで直接書き込まれたいくつかのd3グラフを含むhtmlファイルがあります。グラフの1つを外部jsファイルにアウトソースすると、「NS_ERROR_DOM_BAD_URI:制限付きURIへのアクセスが拒否されました」というメッセージが表示されます。ローカルjsonファイルを読み取るd3.jsonのコードを削除すると、エラーが消えます。しかし、htmlに埋め込まれた外部jsにjsonファイルをロードできる必要があります。
d3.json("forcetree.json", function(json) {
root = json;
update();
});
私は同じエラーを抱えていましたが、解決策はindex.html、script.js、data.jsonを同じディレクトリに置くことです。
.htmlファイルルートを基準にして.jsonファイルを指定します
例:
d3.json("js/forcetree.json", function(json) {
root = json;
update();
});
JSONファイルを、htmlファイルを含むディレクトリのサブディレクトリに移動することで、この問題を解決しました。
壊れた:
www/
code/
hello.html # refers to ../data/hello.json
data/
hello.json
ワーキング:
www/
hello.html # refers to data/hello.json
data/
hello.json
私は同じ問題を抱えており、私はこのようなjsonファイルパスを使用して解決します:
d3.json("file:///C:/path/...../js/forcetree.json", function(json) {
root = json;
update();
});
ブラウザからこのパスにアクセスすると、ファイルはURLを開きます。