рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SVGGElement ( MDN рдкреНрд░рд▓реЗрдЦрди ) jsdom рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
const { JSDOM } = require("jsdom");
const options = {
... your options here ...
};
const dom = new JSDOM(`
<svg>
<g id="g">
</svg>
`, options);
const g = dom.window.document.querySelector("#g");
if (g instanceof SVGGElement) { // throws "SVGGElement is not defined"
console.log("ok");
}
https://jsfiddle.net/p3ag4v85/
(рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ рдФрд░ ok
рджреЗрдЦреЗрдВ)
рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдмрдЧ рджреЗрдЦрд╛, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдПрд╕рдбреЙрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдорд┐рд▓реА рддреНрд░реБрдЯрд┐ рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИ:
тЧП should throw an Error if g element is not found
expect(received).toThrowError(expected)
Expected message: "group element not found"
Received message: "SVGGElement is not defined"
46 | if (!(svgElement instanceof SVGSVGElement))
47 | throw new Error("svg element not found");
> 48 | if (!(groupElement instanceof SVGGElement))
| ^
49 | throw new Error("g element not found");
50 | this.groupElement = groupElement;
51 | this.groupBBoxWidth = 0;
at new Lib (lib/js/index.js:48:39)
at test/MyLib/constructor.test.js:86:15
at Object.<anonymous> (node_modules/expect/build/toThrowMatchers.js:81:11)
at Object.toThrowError (node_modules/expect/build/index.js:342:33)
at Object.<anonymous> (test/MyLib/constructor.test.js:87:7)
85 | expect(
86 | () => new Lib({ svgIdentifier: "svg", groupIdentifier: "g" })
> 87 | ).toThrowError(new TypeError("group element not found"));
| ^
88 | });
89 |
at Object.<anonymous> (test/MyLib/constructor.test.js:87:7)
SVGElement
рд╕рдорд░реНрдерд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб Node.js рд╡реИрд╢реНрд╡рд┐рдХ рдореЗрдВ SVGElement
рдКрдкрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдЖрдкрдХреЛ dom.window.SVGElement
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рд╛рдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
<!DOCTYPE html>
<html>
<body>
<svg id="svg">
<g id="group"></g>
</svg>
<script>
"use strict";
window.addEventListener("load", function() {
const svg = document.getElementById("svg");
const group = document.getElementById("group");
console.dir(svg.constructor); // ╞Т SVGSVGElement()
console.dir(group.constructor); // ╞Т SVGGElement()
});
</script>
</body>
</html>
"use strict";
const { JSDOM } = require("jsdom");
const dom = new JSDOM(`
<svg id="svg">
<g id="group"></g>
</svg>
`);
const svg = dom.window.document.getElementById("svg");
const group = dom.window.document.getElementById("group");
console.log(svg.constructor); // [Function: SVGSVGElement]
console.log(group.constructor); // [Function: SVGElement]
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо SVG g
рддрддреНрд╡ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдПрд╕рд╡реАрдЬреА рд╕рдорд░реНрдерди рдЗрд╕ рд╕рдордп рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо SVG
g
рддрддреНрд╡ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдПрд╕рд╡реАрдЬреА рд╕рдорд░реНрдерди рдЗрд╕ рд╕рдордп рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред