我正在尝试将 cdn 托管的 d3.js 添加到我的 Ipython 笔记本中,如下所示
![Ipython Notebook](https://i.stack.imgur.com/svY2d.png)
但是,当我第一次加载笔记本时,我收到“添加输出时的 JavaScript 错误”,但如果我再次运行单元格,它就会正常工作。难道我做错了什么?提前致谢。
您可能会导致竞争条件,IPython 解释器可以在瞬间将您的 HTML 片段添加到 DOM,然后在加载/处理 D3js 脚本之前触发 JavaScript 命令。我不是浏览器如何加载/执行 JS 的专家,但可能会发生一些不同的事情,因为您是在页面加载后执行的。
可能有点过头了,但你可以使用 RequireJS(无论如何都会加载,因为这就是 Jupyter 用来管理库的)。片段改编自这个问题:
第一个单元格:
%%javascript
requirejs.config({
paths: {
'd3': ['//cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3'],
}, // strip .js ^, require adds it back
});
任何需要 d3js 的单元格,包装调用(例如您的console.log(d3);
) 在下面的:
%%javascript
require(['d3'], function(d3) {
console.log(d3); // or whatever
return {};
});
一个更黑客的解决方案可能只是添加一个time.sleep(1)
在这两个细胞之间。
顺便说一句,你不需要from IPython.display import HTML
使用%%html
细胞魔法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)