55 lines
1.7 KiB
HTML
55 lines
1.7 KiB
HTML
<html>
|
|
<head>
|
|
<style type="text/css">
|
|
.cls1 {
|
|
stroke: black;
|
|
fill: rgb(0,128,255);
|
|
stroke-width: 1;
|
|
}
|
|
</style>
|
|
|
|
<script type="text/javascript">
|
|
function setup() {
|
|
var SHOW_BUG = true;
|
|
|
|
var SVGNS = 'http://www.w3.org/2000/svg';
|
|
var svg = document.createElementNS(SVGNS, "svg");
|
|
svg.width.baseVal.valueAsString = "400px";
|
|
svg.height.baseVal.valueAsString = "400px";
|
|
svg.viewBox.baseVal.x = 0;
|
|
svg.viewBox.baseVal.y = 0;
|
|
svg.viewBox.baseVal.width = 200;
|
|
svg.viewBox.baseVal.height = 90;
|
|
|
|
var path1 = document.createElementNS(SVGNS, "path");
|
|
if (SHOW_BUG) {
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegMovetoAbs(10, 10));
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(25, 15));
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(110, 75));
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(120, 90));
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegLinetoAbs(42, 42));
|
|
path1.pathSegList.appendItem(path1.createSVGPathSegClosePath());
|
|
} else {
|
|
path1.setAttributeNS(null, 'd', "M 10 10 L 25 15 L 110 75 L 120 90 L 42 42 Z");
|
|
}
|
|
|
|
path1.style.setProperty("stroke", "black", "");
|
|
path1.style.setProperty("fill", "red", "");
|
|
var path2 = path1.cloneNode(true);
|
|
path2.setAttributeNS(null, 'transform', "translate(75, 0)");
|
|
|
|
var drawing = document.getElementById("drawing");
|
|
svg.appendChild(path1);
|
|
svg.appendChild(path2);
|
|
drawing.appendChild(svg);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="setup()">
|
|
<p>Below is a JavaScript-generated svg drawing. You should see two red blobs: the left, a programmatically generated path and the right, its clone.</p>
|
|
<div id="drawing"></div>
|
|
</body>
|
|
</html>
|
|
|
|
|