Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /html/semantics/scripting-1/the-script-element/execution-timing/039.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<html><head>
<title> scheduler: IFRAMEs added with DOM</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="testlib/testlib.js"></script>
</head>
<body>
<div id="log">FAILED (This TC requires JavaScript enabled)</div>
<div></div>
<script>log('inline script #1');
for( var i=0; i<2; i++ ){
var iframe=document.createElement('iframe');
document.getElementsByTagName('div')[1].appendChild(iframe);
iframe.src='pages/helloworld.html?'+i+'&'+Math.random();
}
log('end script #1');
</script>
<script type="text/javascript">
log( 'inline script #2' );
promise_test(() => {
const frames = document.querySelectorAll("iframe");
return Promise.all([
new Promise(resolve => window.addEventListener('load', resolve)),
new Promise(resolve => frames[0].addEventListener('load', resolve)),
new Promise(resolve => frames[1].addEventListener('load', resolve)),
]).then(() => {
assert_equals(eventOrder.length, 5);
assert_array_equals(
eventOrder.slice(0, 3),
['inline script #1', 'end script #1', 'inline script #2'],
"inline scripts should run first");
assert_in_array('frame/popup script 0', eventOrder.slice(3, 5), 'iframe should have loaded');
assert_in_array('frame/popup script 1', eventOrder.slice(3, 5), 'iframe should have loaded');
});
}, 'iframes should load asynchronously after inline script run');
</script>
</body></html>