gpt4 book ai didi

javascript - SVG Foreign Object 中的 Ace 编辑器

转载 作者:行者123 更新时间:2023-11-30 16:54:18 26 4
gpt4 key购买 nike

如何添加 Ace EditorD3 SVG ?这可能吗?这样做的最佳方法是什么?

下面是我尝试创建一个 foreignObject 元素并向其添加编辑器的尝试,但没有成功:

    var w = window.innerWidth,
h = window.innerHeight;

var svg = d3.select('body').append('svg')
.attr('width', w)
.attr('height', h);

var group = svg.append("g");

var radius = w / 4;

var circle = group.append("circle")
.attr("cx", w / 2)
.attr("cy", h / 2)
.attr("r", radius)
.attr("fill", "black");

group.append('foreignObject')
.attr("x", w / 2 - radius / 2)
.attr("y", h / 2 - radius / 2)
.attr("width", radius)
.attr("height", radius)
.style("background-color", "red")
.append("xhtml:div")
.attr("id", "editor")
.attr('width', '50')
.attr('height', '50');

var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

最佳答案

在 html 中,宽度和高度是 CSS 样式,而不是属性。一旦我修复了它并使其足够大以供查看,编辑器似乎对我有用,至少在我测试它的 Firefox 中是这样。

    var w = window.innerWidth,
h = window.innerHeight;

var svg = d3.select('body').append('svg')
.attr('width', w)
.attr('height', h);

var group = svg.append("g");

var radius = w / 4;

var circle = group.append("circle")
.attr("cx", w / 2)
.attr("cy", h / 2)
.attr("r", radius)
.attr("fill", "black");

group.append('foreignObject')
.attr("x", w / 2 - radius / 2)
.attr("y", h / 2 - radius / 2)
.attr("width", radius)
.attr("height", radius)
.style("background-color", "red")
.append("xhtml:div")
.attr("id", "editor")
.attr('style', 'width: 350px;height: 50px;');


var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.9/ace.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于javascript - SVG Foreign Object 中的 Ace 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com