products/Sources/formale Sprachen/C/Firefox/dom/events/test/window_bug1447993.html
<!DOCTYPE HTML >
<html >
<head >
<title >Test for Bug 1447993 </title >
<style >
#area {
background: green;
border: 1 px solid black;
width: 40 px;
height: 40 px;
}
#target {
background: blue;
border: 1 px solid black;
width: 20 px;
height: 20 px;
margin: 10 px;
}
</style >
<script src="/tests/SimpleTest/EventUtils.js" ></script >
<script >
var tests = [
topLevelDocumentEventHandling,
topLevelDocumentEventHandlingWithTouch,
iframeEventHandling,
];
function next() {
if (!tests.length) {
opener.done();
window.close();
} else {
var test = tests.shift();
requestAnimationFrame(function() { setTimeout(test); });
}
}
function start() {
next();
}
function topLevelDocumentEventHandling() {
var pid;
var area = document.getElementById("area" );
var target = document.getElementById("target" );
var body = document.body ;
var html = document.documentElement;
var eventLog = [];
function captureEvent(e) {
eventLog.push([e.type, e.composedPath()]);
}
const pathToTarget = [ target, area , body , html , document, window ];
const pathToArea = [ area , body , html , document, window ];
var expectedEvents = [
["pointerdown" , pathToTarget],
["mousedown" , pathToTarget],
["pointerup" , pathToArea],
["mouseup" , pathToArea],
["click" , pathToTarget],
];
window.addEventListener("pointerdown" ,
function(e) {
captureEvent(e);
pid = e.pointerId;
area .setPointerCapture(pid);
}, { once: true});
window.addEventListener("mousedown" ,
function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("pointerup" ,
function(e) {
captureEvent(e);
area .releasePointerCapture(pid);
}, { once: true});
window.addEventListener("mouseup" , function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("click" , function(e) {
captureEvent(e);
}, { once: true});
synthesizeMouseAtCenter(target, {}, window);
opener.is(eventLog.length, expectedEvents.length,
"[topLevelDocumentEventHandling] Same number events expected." );
for (var i = 0 ; i < eventLog.length; ++i ) {
opener.is(eventLog[i ][0 ], expectedEvents[i ][0 ],
`topLevelDocumentEventHandling ${i }`);
for (var j = 0 ; j < eventLog[i ][1 ].length; ++j) {
opener.is(eventLog[i ][1 ][j], expectedEvents[i ][1 ][j],
`topLevelDocumentEventHandling ${i } ${j}`);
}
}
next();
}
function topLevelDocumentEventHandlingWithTouch() {
var pid;
var area = document.getElementById("area" );
var target = document.getElementById("target" );
var body = document.body ;
var html = document.documentElement;
var eventLog = [];
function captureEvent(e) {
eventLog.push([e.type, e.composedPath()]);
}
const pathToTarget = [ target, area , body , html , document, window ];
const pathToArea = [ area , body , html , document, window ];
var expectedEvents = [
["pointerdown" , pathToTarget],
["touchstart" , pathToTarget],
["pointerup" , pathToArea],
["touchend" , pathToTarget],
["mousedown" , pathToTarget],
["mouseup" , pathToTarget],
["click" , pathToTarget],
];
window.addEventListener("pointerdown" ,
function(e) {
captureEvent(e);
pid = e.pointerId;
area .setPointerCapture(pid);
}, { once: true});
window.addEventListener("touchstart" , function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("pointerup" ,
function(e) {
captureEvent(e);
try {
area .releasePointerCapture(pid);
} catch(ex) {}
}, { once: true});
window.addEventListener("touchend" , function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("mousedown" ,
function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("mouseup" , function(e) {
captureEvent(e);
}, { once: true});
window.addEventListener("click" , function(e) {
captureEvent(e);
}, { once: true});
synthesizeTouchAtCenter(target, {}, window);
opener.is(eventLog.length, expectedEvents.length,
"[topLevelDocumentEventHandlingWithTouch] Same number events expected." );
for (var i = 0 ; i < eventLog.length; ++i ) {
opener.is(eventLog[i ][0 ], expectedEvents[i ][0 ],
`topLevelDocumentEventHandlingWithTouch ${i }`);
for (var j = 0 ; j < eventLog[i ][1 ].length; ++j) {
opener.is(eventLog[i ][1 ][j], expectedEvents[i ][1 ][j],
`topLevelDocumentEventHandlingWithTouch ${i } ${j}`);
}
}
next();
}
function iframeEventHandling() {
var pid;
var iframe = document.getElementById("iframe" );
var doc = iframe .contentDocument;
doc.head .innerHTML = "<style>" + document.getElementsByTagName("style" )[0 ].textContent + "</style>" ;
var area = doc.createElement("div" );
area .id = "area" ;
var target = doc.createElement("div" );
target.id = "target" ;
area .appendChild(target);
doc.body .appendChild(area );
var body = doc.body ;
var html = doc.documentElement;
var win = doc.defaultView;
var eventLog = [];
function captureEvent(e) {
eventLog.push([e.type, e.composedPath()]);
}
const pathToTarget = [ target, area , body , html , doc, win ];
const pathToArea = [ area , body , html , doc, win ];
var expectedEvents = [
["pointerdown" , pathToTarget],
["mousedown" , pathToTarget],
["pointerup" , pathToArea],
["mouseup" , pathToArea],
["click" , pathToTarget],
];
win.addEventListener("pointerdown" ,
function(e) {
captureEvent(e);
pid = e.pointerId;
area .setPointerCapture(pid);
}, { once: true});
win.addEventListener("mousedown" ,
function(e) {
captureEvent(e);
}, { once: true});
win.addEventListener("pointerup" ,
function(e) {
captureEvent(e);
area .releasePointerCapture(pid);
}, { once: true});
win.addEventListener("mouseup" , function(e) {
captureEvent(e);
}, { once: true});
win.addEventListener("click" , function(e) {
captureEvent(e);
}, { once: true});
synthesizeMouseAtCenter(target, {}, win);
opener.is(eventLog.length, expectedEvents.length,
"[iframeEventHandling] Same number events expected." );
for (var i = 0 ; i < eventLog.length; ++i ) {
opener.is(eventLog[i ][0 ], expectedEvents[i ][0 ],
`iframeEventHandling ${i }`);
for (var j = 0 ; j < eventLog[i ][1 ].length; ++j) {
opener.is(eventLog[i ][1 ][j], expectedEvents[i ][1 ][j],
`iframeEventHandling ${i } ${j}`);
}
}
next();
}
</script >
</head >
<body onload="start();" >
<div id="area" >
<div id="target" ></div >
</div >
<iframe id="iframe" ></iframe >
<h5 id="targetOutsideIframe" ></h5>
</body >
</html >
Messung V0.5 in Prozent C=94 H=97 G=95
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland