diff --git a/test/domRectSVG.svg b/test/domRectSVG.svg new file mode 100644 index 0000000..17be7bf --- /dev/null +++ b/test/domRectSVG.svg @@ -0,0 +1,10 @@ + + + + Text with Unicode 𝞐 + \ No newline at end of file diff --git a/test/domRectTest.css b/test/domRectTest.css index 63b9efa..0518a89 100644 --- a/test/domRectTest.css +++ b/test/domRectTest.css @@ -1,5 +1,5 @@ -#iframe { +#iframe, #svg { position: fixed; top: -2000%; } diff --git a/test/domRectTest.js b/test/domRectTest.js index f433866..ee7ebed 100644 --- a/test/domRectTest.js +++ b/test/domRectTest.js @@ -12,12 +12,13 @@ const container = document.getElementById("tests"); const iframe = document.getElementById("iframe"); + const svg = document.getElementById("svg"); const noIframe = document.getElementById("noIframe"); const template = document.querySelector(".test"); template.parentElement.removeChild(template); function getElements(useIframe = true){ - const doc = useIframe? iframe.contentDocument: noIframe; + const doc = useIframe? (useIframe === "svg"? svg.contentDocument: iframe.contentDocument): noIframe; return Array.from(doc.querySelectorAll(".testRect")); } @@ -58,9 +59,15 @@ "" + properties.map(function(property){ return "" + property + "" + rects.map(function(rect){ - return "" + - formatNumber(rect.data[property]) + - ""; + const value = rect.data[property]; + if ((typeof value) === "number"){ + return "" + + formatNumber(rect.data[property]) + + ""; + } + else { + return "not available"; + } }).join("") + ""; }).join("") + ""; @@ -79,7 +86,8 @@ function createTest(title, callback, useIframe){ const output = template.cloneNode(true); - output.querySelector(".title").textContent = title + (useIframe? " (iframe)": ""); + output.querySelector(".title").textContent = title + + (useIframe? " (" + (useIframe === "svg"? "svg": "iframe") + ")": ""); output.querySelector(".refresh").addEventListener("click", function(){ performTest(output, callback, useIframe); }); @@ -145,6 +153,17 @@ return range.getBoundingClientRect(); }, useIframe); }); + createTest("SVGGraphicsElement.getBBox", function(element){ + return element.getBBox(); + }, "svg"); + createTest("SVGTextContentElement.getExtentOfChar", function(element){ + return element.getExtentOfChar(element.textContent.length - 1); + }, "svg"); + createTest("SVGTextContentElement.get(Start|End)OfChar", function(element){ + const start = element.getStartPositionOfChar(element.textContent.length - 1); + const end = element.getEndPositionOfChar(element.textContent.length - 1); + return new DOMRect(start.x, start.y, end.x - start.x, end.y - start.y); + }, "svg"); document.querySelectorAll(".content-hidable").forEach(function(parentNode){ parentNode.querySelector(".toggle").addEventListener("click", function(){ diff --git a/test/domRectTest.php b/test/domRectTest.php index 15898d4..4d30b24 100644 --- a/test/domRectTest.php +++ b/test/domRectTest.php @@ -11,12 +11,13 @@

DOMRect test

Expected result

Tests

+