Internet Explorer 中 svg 文本中的空格
Whitespaces in svg text in Internet explorer
我正尝试通过 Snap.svg append/write svg 文本。下面的代码在 chrome、firefox、opera 和 edge 中运行良好,但在 Internet Explorer 中无法运行。我已经尝试将字符集作为 utf8 放入 html 文件内的元标记中,但它仍然无法正常工作。
如果 lines2 作为参数传递,则 Internet Explorer 会将其视为普通字符串。
var lines1 = ["a b", "c d", "e f"];
var lines2 = ["a b", "c d", "e f"];
Snap("#svg").text(10, 0, lines).attr({
fill: "black",
fontSize: "18px"
}).selectAll("tspan").forEach(function(tspan, i) {
tspan.attr({
x: 0,
dy: 20
});
tspan.node.innerHTML = tspan.node.textContent.replace(/ /g,' ');
});
这是一个jsfiddlelink。
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
也许我的解决方案会有所帮助尝试添加此 doctype 声明,以解决您的 Internet Explorer 问题。
在 SVG 元素上使用 innerHTML
并未得到普遍支持。仅适用于最新的浏览器版本。
使用 textContent
,而不是 HTML Latin1 实体,而是使用与 nbsp 等效的 unicode 字符 (ASCII 160)。
var lines = ["a b", "c d", "e f"]
Snap("#svg").text(10, 0, lines).attr({
fill: "black",
fontSize: "18px"
}).selectAll("tspan").forEach(function(tspan, i) {
tspan.attr({
x: 0,
dy: 20
});
tspan.node.textContent = tspan.node.textContent.replace(/ /g,'\u00a0');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<svg id='svg'></svg>
我正尝试通过 Snap.svg append/write svg 文本。下面的代码在 chrome、firefox、opera 和 edge 中运行良好,但在 Internet Explorer 中无法运行。我已经尝试将字符集作为 utf8 放入 html 文件内的元标记中,但它仍然无法正常工作。
如果 lines2 作为参数传递,则 Internet Explorer 会将其视为普通字符串。
var lines1 = ["a b", "c d", "e f"];
var lines2 = ["a b", "c d", "e f"];
Snap("#svg").text(10, 0, lines).attr({
fill: "black",
fontSize: "18px"
}).selectAll("tspan").forEach(function(tspan, i) {
tspan.attr({
x: 0,
dy: 20
});
tspan.node.innerHTML = tspan.node.textContent.replace(/ /g,' ');
});
这是一个jsfiddlelink。
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
也许我的解决方案会有所帮助尝试添加此 doctype 声明,以解决您的 Internet Explorer 问题。
在 SVG 元素上使用 innerHTML
并未得到普遍支持。仅适用于最新的浏览器版本。
使用 textContent
,而不是 HTML Latin1 实体,而是使用与 nbsp 等效的 unicode 字符 (ASCII 160)。
var lines = ["a b", "c d", "e f"]
Snap("#svg").text(10, 0, lines).attr({
fill: "black",
fontSize: "18px"
}).selectAll("tspan").forEach(function(tspan, i) {
tspan.attr({
x: 0,
dy: 20
});
tspan.node.textContent = tspan.node.textContent.replace(/ /g,'\u00a0');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
<svg id='svg'></svg>