mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2024-12-22 12:50:36 +01:00
domRectTest: added svg tests
This commit is contained in:
parent
3eea8fe7c4
commit
ff98b9b9af
10
test/domRectSVG.svg
Normal file
10
test/domRectSVG.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg viewBox="0 0 240 80" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
#text {
|
||||||
|
font: italic 13px sans-serif;
|
||||||
|
transform: rotate(-3.4deg);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<text x="20" y="35" data-name="text" id="text" class="testRect">Text with Unicode 𝞐</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 268 B |
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
#iframe {
|
#iframe, #svg {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: -2000%;
|
top: -2000%;
|
||||||
}
|
}
|
||||||
|
@ -12,12 +12,13 @@
|
|||||||
|
|
||||||
const container = document.getElementById("tests");
|
const container = document.getElementById("tests");
|
||||||
const iframe = document.getElementById("iframe");
|
const iframe = document.getElementById("iframe");
|
||||||
|
const svg = document.getElementById("svg");
|
||||||
const noIframe = document.getElementById("noIframe");
|
const noIframe = document.getElementById("noIframe");
|
||||||
const template = document.querySelector(".test");
|
const template = document.querySelector(".test");
|
||||||
template.parentElement.removeChild(template);
|
template.parentElement.removeChild(template);
|
||||||
|
|
||||||
function getElements(useIframe = true){
|
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"));
|
return Array.from(doc.querySelectorAll(".testRect"));
|
||||||
}
|
}
|
||||||
@ -58,9 +59,15 @@
|
|||||||
"</tr>" +
|
"</tr>" +
|
||||||
properties.map(function(property){
|
properties.map(function(property){
|
||||||
return "<tr><th>" + property + "</th>" + rects.map(function(rect){
|
return "<tr><th>" + property + "</th>" + rects.map(function(rect){
|
||||||
return "<td class=\"value\" title=\"" + rect.data[property] + "\">" +
|
const value = rect.data[property];
|
||||||
formatNumber(rect.data[property]) +
|
if ((typeof value) === "number"){
|
||||||
"</td>";
|
return "<td class=\"value\" title=\"" + rect.data[property] + "\">" +
|
||||||
|
formatNumber(rect.data[property]) +
|
||||||
|
"</td>";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "<td class=\"value unavailable\">not available</td>";
|
||||||
|
}
|
||||||
}).join("") + "</tr>";
|
}).join("") + "</tr>";
|
||||||
}).join("") +
|
}).join("") +
|
||||||
"</table>";
|
"</table>";
|
||||||
@ -79,7 +86,8 @@
|
|||||||
|
|
||||||
function createTest(title, callback, useIframe){
|
function createTest(title, callback, useIframe){
|
||||||
const output = template.cloneNode(true);
|
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(){
|
output.querySelector(".refresh").addEventListener("click", function(){
|
||||||
performTest(output, callback, useIframe);
|
performTest(output, callback, useIframe);
|
||||||
});
|
});
|
||||||
@ -145,6 +153,17 @@
|
|||||||
return range.getBoundingClientRect();
|
return range.getBoundingClientRect();
|
||||||
}, useIframe);
|
}, 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){
|
document.querySelectorAll(".content-hidable").forEach(function(parentNode){
|
||||||
parentNode.querySelector(".toggle").addEventListener("click", function(){
|
parentNode.querySelector(".toggle").addEventListener("click", function(){
|
||||||
|
@ -11,12 +11,13 @@
|
|||||||
<h1>DOMRect test</h1>
|
<h1>DOMRect test</h1>
|
||||||
<h2>Expected result</h2>
|
<h2>Expected result</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>all the hashes and numbers should be equal for each test</li>
|
<li>all the hashes and numbers should be equal for the getClientRects and getBoundingClientRect tests</li>
|
||||||
<li>if "refresh" is clicked the hash must not change</li>
|
<li>if "refresh" is clicked the hash must not change</li>
|
||||||
<li>upon page reload the hashes change (depending on CanvasBlocker settings - e.g. not in the stealth preset)</li>
|
<li>upon page reload the hashes change (depending on CanvasBlocker settings - e.g. not in the stealth preset)</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2>Tests</h2>
|
<h2>Tests</h2>
|
||||||
<iframe id="iframe" src="domRectIFrame.php"></iframe>
|
<iframe id="iframe" src="domRectIFrame.php"></iframe>
|
||||||
|
<iframe id="svg" src="domRectSVG.svg"></iframe>
|
||||||
<div id="noIframe"><?php include("domRectElements.part.html");?></div>
|
<div id="noIframe"><?php include("domRectElements.part.html");?></div>
|
||||||
<div id="tests">
|
<div id="tests">
|
||||||
<div class="test">
|
<div class="test">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user