我正在使用JavaScript生成動態SVG圖像。 我的意圖是讓特定區域的工具提示中包含信息。 我至今工作於Chrome和Firefox的,但只有在IE 11使用JavaScript,將換行符插入HTML textContent屬性(特定於IE)
部分如果我使用的textContent,"\r\n"
在IE中被忽略,<br />
字面上顯示。
的innerHTML似乎是答案從以前問類似的問題:
Question 9330671
Question 9980416
通常情況下,切換到的innerHTML會解決這個問題,但IE不支持的innerHTML這個特定使用,所以根本不顯示文字。
無論使用的innerHTML或的textContent作品Chrome或Firefox,如此反覆,這只是在IE的問題(與IE 11測試)。向所有必須使用此瀏覽器測試所提供代碼的人道歉。
交互代碼可在http://jsfiddle.net/rnhy9pus/。
另外,完整的代碼包含如下:
function createPathContent(svgID, popupText, pathDirections)
{
var path = document.createElementNS("http://www.w3.org/2000/svg","path");
path.setAttribute("d",pathDirections);
var popup = document.createElementNS("http://www.w3.org/2000/svg","title");
popup.textContent = popupText; // <-- LINE TO FOCUS ON
path.appendChild(popup);
document.getElementById(svgID).appendChild(path);
}
function createPathHTML(svgID, popupText, pathDirections)
{
var path = document.createElementNS("http://www.w3.org/2000/svg","path");
path.setAttribute("d",pathDirections);
var popup = document.createElementNS("http://www.w3.org/2000/svg","title");
popup.innerHTML = popupText; // <-- LINE TO FOCUS ON
path.appendChild(popup);
document.getElementById(svgID).appendChild(path);
}
function createExample(svgID)
{
document.getElementById(svgID).setAttribute("xmlns", "http://www.w3.org/2000/svg");
document.getElementById(svgID).setAttribute("version", "1.1");
document.getElementById(svgID).setAttribute("width", "300");
document.getElementById(svgID).setAttribute("viewBox", "0 0 100 100");
document.getElementById(svgID).setAttribute("preserveAspectRatio", "xMinYMin meet");
var style = document.createElement("style");
style.setAttribute("type","text/css");
style.innerHTML = "path { fill: #ccc; } path:hover { fill: #ff0; }";
document.getElementById(svgID).appendChild(style);
var NEW_LINE = "\r\n";
//var NEW_LINE = "<br />"; // This displays literally in textContent and as a new line in innerHTML.
createPathContent(svgID, "Tooltip text using textContent:" + NEW_LINE + "New Line", "M 10 10 L 90 10 L 90 45 L 10 45 Z");
// Works correctly in Chrome or Firefox. Displays in IE 11, but only on a single line.
createPathHTML(svgID, "Tooltip text using innerHTML:" + NEW_LINE + "New Line", "M 10 55 L 90 55 L 90 90 L 10 90 Z");
// Works correctly in Chrome or Firefox. Does not display in IE 11.
}
createExample("exampleSVG");
<svg id="exampleSVG" xmlns="http://www.w3.org/2000/svg"></svg>
使用此技術將帶有子元素
元素的字符串傳遞到數組中(帶有「\ r」條目)足以說服Internet Explorer的行爲。非常感謝您提供補丁代碼。 – Bryan 2015-02-10 22:44:49