diff options
Diffstat (limited to 'testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/anchor-fragment-form-submit-withpath.html')
-rw-r--r-- | testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/anchor-fragment-form-submit-withpath.html | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/anchor-fragment-form-submit-withpath.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/anchor-fragment-form-submit-withpath.html new file mode 100644 index 0000000000..823174181e --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/anchor-fragment-form-submit-withpath.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="author" title="Joey Arhar" href="mailto:jarhar@chromium.org"> +<link rel="help" href="https://html.spec.whatwg.org/C/#following-hyperlinks"> +<title>Anchor element with onclick form submission and href to fragment</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<!-- When an anchor element has an onclick handler which submits a form, + the anchor's navigation should occur instead of the form's navigation. + However, if the anchor has an href which is just a fragment like "#", + then the form should be submitted. Many sites rely on this behavior. --> + +<iframe name="test"></iframe> +<form target="test" action="resources/form.html"></form> +<a id="anchor" target="test" onclick="document.forms[0].submit()">Test</a> + +<script> +async_test(t => { + const iframe = document.querySelector('iframe'); + iframe.onload = t.step_func(() => { + const anchor = document.getElementById('anchor'); + anchor.href = '/#'; + anchor.click(); + window.onmessage = t.step_func(event => { + if (typeof event.data === 'string' && event.data.includes('navigation')) { + assert_equals(event.data, 'form navigation'); + t.done(); + } + }); + }); + + iframe.src = '/'; +}); +</script> |