53 lines
1.9 KiB
HTML
53 lines
1.9 KiB
HTML
<!-- Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
<!doctype HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
</head>
|
|
<body>
|
|
<!-- introductionType=eventHandler -->
|
|
<div onclick="console.log('link')">link</div>
|
|
|
|
<!-- introductionType=inlineScript mapped to scriptElement -->
|
|
<script type="text/javascript">
|
|
"use strict";
|
|
/* eslint-disable */
|
|
function inlineSource() {}
|
|
|
|
// introductionType=eval
|
|
// Assign it to a global in order to avoid it being GCed
|
|
eval("this.global = function evalFunction() {}");
|
|
|
|
// introductionType=Function
|
|
// Also assign to a global to avoid being GCed
|
|
this.global2 = new Function("return 42;");
|
|
|
|
// introductionType=injectedScript mapped to scriptElement
|
|
const script = document.createElement("script");
|
|
script.textContent = "console.log('inline-script')";
|
|
document.documentElement.appendChild(script);
|
|
|
|
// introductionType=Worker, but ends up being null on SourceActor's form
|
|
// Assign the worker to a global variable in order to avoid
|
|
// having it be GCed.
|
|
this.worker = new Worker("worker-sources.js");
|
|
|
|
window.registrationPromise = navigator.serviceWorker.register("service-worker-sources.js");
|
|
|
|
// introductionType=domTimer
|
|
setTimeout(`console.log("timeout")`, 0);
|
|
|
|
// introductionType=eventHandler
|
|
window.addEventListener("DOMContentLoaded", () => {
|
|
document.querySelector("div[onclick]").click();
|
|
});
|
|
</script>
|
|
<!-- introductionType=srcScript mapped to scriptElement -->
|
|
<script src="sources.js"></script>
|
|
<!-- introductionType=javascriptURL -->
|
|
<iframe src="javascript:'666'"></iframe>
|
|
<!-- srcdoc attribute on iframes -->
|
|
<iframe srcdoc="<script>console.log('srcdoc')</script> <script>console.log('srcdoc 2')</script>"></iframe>
|
|
</body>
|
|
</html>
|