【问题标题】:How to embed a d3.js example to the Jekyll blog post?如何在 Jekyll 博客文章中嵌入 d3.js 示例?
【发布时间】:2014-03-26 04:14:48
【问题描述】:

我正在尝试这个 Jekyll 主题 http://richbray.me/frap/

我想创建一篇博客文章来展示这个 D3.js 示例: http://bl.ocks.org/mbostock/4061502

所以主要的难点是如何让 Markdown 渲染脚本让 d3.js 显示它的内容。 有什么想法吗?

【问题讨论】:

  • This question 可能会有所帮助。
  • 所以提供的解决方案是在开始标签之后添加一个空的新行。我会尝试报告,谢谢。
  • 多次尝试后,我认为我无法正确设置示例。我实际上不认为您可以在 Markdown (.md) 文件中嵌入 Javascript 脚本并渲染和执行它以显示它是什么。请证明我错了。
  • 幸运的是,@nicksuch 的回答证明我楼上的说法是错误的。脱帽致敬。

标签: html d3.js jekyll


【解决方案1】:

有几种方法可以让它工作:

嵌入<iframe>

the d3 example 中,有一个嵌入的 iframe:

<iframe src="/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/" marginwidth="0" marginheight="0" scrolling="no"></iframe>

你可以改成

<iframe src="http://bl.ocks.org/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/" marginwidth="0" marginheight="0" scrolling="no"></iframe>

然后,您只需将此 iframe 行粘贴到您的降价文件中即可。确保前后各有一个空行。

您还可以向该 iframe 元素添加 width="600" height="400" 属性,以便大部分图表都适合 iframe。

定位文档中的块元素(例如&lt;div&gt; 而不是&lt;body&gt;

  • var svg = d3.select("body").selectAll("svg") 更改为var svg = d3.select("div#example").selectAll("svg")
  • 保存morley.csv(你可以得到它here)到你的Jekyll站点的根目录,然后把d3.csv("morley.csv", function(error, csv)改成d3.csv("/morley.csv", function(error, csv)(把这个文件复制到你的Jekyll项目中解决跨站脚本错误)
  • &lt;script src="box.js"&gt;&lt;/script&gt; 更改为&lt;script src="http://bl.ocks.org/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/box.js"&gt;&lt;/script&gt;
  • 创建一个名为&lt;div id="example"&gt;&lt;/div&gt;的新元素

我创建了this Jekyll blog post,它展示了如何做到这一点。另外,请查看 Matt Shwery's blog post(和 raw markdown)以及另一个 d3 / Jekyll 示例。

【讨论】:

  • 好吧,我还能说什么。你摇滚!而这个 d3.select("div#example").selectAll("svg") 是真正的 d3.js 了不起,我还在熟悉它,想了解更多。另外值得一提的是,我已更改为另一个 Jekyll 模板,这个示例效果很好。我可能不会在我原来的 Jekyll 模板上进行测试,所以不确定它是否在那里工作。
  • 复制粘贴 iframe Refused to display 'http://bl.ocks.org/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' *.ocks.org".后收到此错误消息@
【解决方案2】:

bl.ocks 不再支持 inframe 你会得到以下错误

拒绝在框架中显示“http://bl.ocks.org/mbostock/raw/4061502/0a200ddf998aa75dfdb1ff32e16b680a15e5cb01/”,因为祖先违反了以下内容安全策略指令:“frame-ancestors 'self' *.ocks.org”。

您可以尝试使用 rawgit.com

【讨论】:

    猜你喜欢
    • 2022-12-25
    • 2016-08-29
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多