object-javascript-url.html (1843B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>object - javascript: URL</title> 4 <link rel="help" href="https://html.spec.whatwg.org/#the-object-element"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <div id="log"></div> 8 <script> 9 // the steps to (re)determine what the object element represents 10 // fetches url, which results in a network error 11 // and thus "fallback". 12 promise_test(async function (t) { 13 const object = document.createElement('object'); 14 object.data = 'javascript:"foo"'; 15 object.onload = t.unreached_func('No load event expected'); 16 document.body.append(object); 17 t.add_cleanup(() => { object.remove(); }); 18 await new Promise(resolve => { t.step_timeout(resolve, 100); }); 19 }, "javascript: in data attribute should do nothing"); 20 21 function insertObjectNavigable(t) { 22 const object = document.createElement('object'); 23 object.data = '/resources/blank.html'; 24 document.body.append(object); 25 t.add_cleanup(() => { object.remove(); }); 26 return object; 27 } 28 29 promise_test(async function (t) { 30 const object = insertObjectNavigable(t); 31 await new Promise(resolve => { object.onload = resolve; }); 32 const loaded = new Promise(resolve => { object.onload = resolve; }); 33 window[0].location.href = 'javascript:"test"'; 34 await loaded; 35 }, 'location.href = \'javascript:"test"\' should fire a load event'); 36 37 promise_test(async function (t) { 38 const object = insertObjectNavigable(t); 39 await new Promise(resolve => { object.onload = resolve; }); 40 object.onload = t.unreached_func('No second load event expected'); 41 window[0].location.href = 'javascript:1'; 42 await new Promise(resolve => { t.step_timeout(resolve, 100); }); 43 }, 'location.href = \'javascript:1\' should not fire a load event'); 44 </script>