| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>valid formaction</title> |
| <button formaction="a:foo.com"></button><!-- scheme-private --> |
| <button formaction="foo:/"></button><!-- scheme-private-slash --> |
| <button formaction="foo://"></button><!-- scheme-private-slash-slash --> |
| <button formaction="foo:/bar.com/"></button><!-- scheme-private-path --> |
| <button formaction="foo://///////"></button><!-- scheme-private-path-leading-slashes-only --> |
| <button formaction="foo://///////bar.com/"></button><!-- scheme-private-path-leading-slashes-chars --> |
| <button formaction="foo:////://///"></button><!-- scheme-private-path-leading-slashes-colon-slashes --> |
| <button formaction="c:/foo"></button><!-- scheme-private-single-letter --> |
| <button formaction="madeupscheme:/example.com/"></button><!-- scheme-private-single-slash --> |
| <button formaction="file:/example.com/"></button><!-- scheme-file-single-slash --> |
| <button formaction="ftps:/example.com/"></button><!-- scheme-ftps-single-slash --> |
| <button formaction="gopher:/example.com/"></button><!-- scheme-gopher-single-slash --> |
| <button formaction="ws:/example.com/"></button><!-- scheme-ws-single-slash --> |
| <button formaction="wss:/example.com/"></button><!-- scheme-wss-single-slash --> |
| <button formaction="javascript:/example.com/"></button><!-- scheme-javascript-single-slash --> |
| <button formaction="mailto:/example.com/"></button><!-- scheme-mailto-single-slash --> |
| <button formaction="madeupscheme:example.com/"></button><!-- scheme-private-no-slash --> |
| <button formaction="ftps:example.com/"></button><!-- scheme-ftps-no-slash --> |
| <button formaction="gopher:example.com/"></button><!-- scheme-gopher-no-slash --> |
| <button formaction="wss:example.com/"></button><!-- scheme-wss-no-slash --> |
| <button formaction="mailto:example.com/"></button><!-- scheme-mailto-no-slash --> |
| <button formaction="data:text/plain,foo"></button><!-- scheme-data-no-slash --> |
| <button formaction="http://user:pass@foo:21/bar;par?b#c"></button><!-- userinfo --> |
| <button formaction="http://[2001::1]"></button><!-- host-ipv6 --> |
| <button formaction="http://[2001::1]:80"></button><!-- host-ipv6-port --> |
| <button formaction="http://f:/c"></button><!-- port-none-but-colon --> |
| <button formaction="http://f:0/c"></button><!-- port-0 --> |
| <button formaction="http://f:00000000000000/c"></button><!-- port-00000000000000 --> |
| <button formaction="http://f:00000000000000000000080/c"></button><!-- port-00000000000000000000080 --> |
| <button formaction="http://a:b@c:29/d"></button><!-- userinfo-host-port-path --> |
| <button formaction="http://foo.com:b@d/"></button><!-- userinfo-username-non-alpha --> |
| <button formaction="http://foo/abcd?efgh?ijkl"></button><!-- query-contains-question-mark --> |
| <button formaction="http://foo/abcd#foo?bar"></button><!-- fragment-contains-question-mark --> |
| <button formaction="http://example.com/foo/%2e"></button><!-- path-percent-encoded-dot --> |
| <button formaction="http://example.com/%20foo"></button><!-- path-percent-encoded-space --> |
| <button formaction="http://example.com/©zbar"></button><!-- path-non-ascii --> |
| <button formaction="http://example.com/foo%41%7a"></button><!-- path-percent-encoded-multiple --> |
| <button formaction="http://example.com/foo%91"></button><!-- path-percent-encoded-u0091 --> |
| <button formaction="http://example.com/foo%00"></button><!-- path-percent-encoded-u0000 --> |
| <button formaction="http://example.com/%3A%3a%3C%3c"></button><!-- path-percent-encoded-mixed-case --> |
| <button formaction="http://example.com/你好你好"></button><!-- path-unicode-han --> |
| <button formaction="http://example.com//foo"></button><!-- path-uFEFF --> |
| <button formaction="http://example.com//foo//bar"></button><!-- path-u202E-u202D --> |
| <button formaction="http://💩"></button><!-- host-is-pile-of-poo --> |
| <button formaction="http💩//:foo"></button><!-- path-contains-pile-of-poo --> |
| <button formaction="http://example.com/foo?💩"></button><!-- query-contains-pile-of-poo --> |
| <button formaction="http://example.com/foo#💩"></button><!-- fragment-contains-pile-of-poo --> |
| <button formaction="http://192.0x00A80001"></button><!-- host-192.0x00A80001 --> |
| <button formaction="http://%25DOMAIN:foobar@foodomain.com"></button><!-- userinfo-username-contains-percent-encoded --> |
| <button formaction="http://@www.example.com"></button><!-- userinfo-empty --> |
| <button formaction="http://:b@www.example.com"></button><!-- userinfo-user-empty --> |
| <button formaction="http://a:@www.example.com"></button><!-- userinfo-password-empty --> |
| <button formaction="http://GOOgoo.com"></button><!-- host-exotic-whitespace --> |
| <button formaction="http://www.foo。bar.com"></button><!-- host-exotic-dot --> |
| <button formaction="http://Go.com"></button><!-- host-fullwidth --> |
| <button formaction="http://你好你好"></button><!-- host-idn-unicode-han --> |
| <button formaction="http://192.168.0.257/"></button><!-- host-IP-address-broken --> |
| <button formaction="//foo/bar"></button><!-- scheme-schemeless-relative --> |
| <button formaction="/"></button><!-- path-slash-only-relative --> |
| <button formaction="/a/b/c"></button><!-- path-simple-relative --> |
| <button formaction="/a%2fc"></button><!-- path-percent-encoded-slash-relative --> |
| <button formaction="/a/%2f/c"></button><!-- path-percent-encoded-slash-plus-slashes-relative --> |
| <button formaction="?"></button><!-- query-empty-no-path-relative --> |
| <button formaction="#"></button><!-- fragment-empty-hash-only-no-path-relative --> |
| <button formaction="#/"></button><!-- fragment-slash-relative --> |
| <button formaction="#;?"></button><!-- fragment-semicolon-question-mark-relative --> |
| <button formaction="#β"></button><!-- fragment-non-ascii-relative --> |
| <button formaction="foo.com"></button><!-- scheme-none-relative --> |
| <button formaction=":"></button><!-- path-colon-relative --> |
| <button formaction=":a"></button><!-- path-leading-colon-letter-relative --> |
| <button formaction=":foo.com"></button><!-- path-leading-colon-chars-relative --> |
| <button formaction=":/"></button><!-- path-leading-colon-slash-relative --> |
| <button formaction=":#"></button><!-- path-leading-colon-hash-relative --> |
| <button formaction=":23"></button><!-- path-leading-colon-number-relative --> |
| <button formaction="/:23"></button><!-- path-slash-colon-number-relative --> |
| <button formaction="::"></button><!-- path-leading-colon-colon-relative --> |
| <button formaction="::23"></button><!-- path-colon-colon-number-relative --> |
| <button formaction="💩http://foo"></button><!-- path-starts-with-pile-of-poo --> |
| <button formaction="/💩"></button><!-- path-slash-pile-of-poo --> |
| <button formaction="File://foo/bar.html"></button><!-- scheme-file-uppercase --> |
| <button formaction="file://C|/foo/bar"></button><!-- scheme-file-slash-slash-c-bar --> |
| <button formaction="file://server/foo/bar"></button><!-- scheme-file-host-included --> |
| <button formaction="file:///foo/bar.txt"></button><!-- scheme-file-host-empty --> |
| <button formaction="file:"></button><!-- scheme-file-scheme-only --> |
| <button formaction="file:/"></button><!-- scheme-file-slash-only --> |
| <button formaction="file://"></button><!-- scheme-file-slash-slash-only --> |
| <button formaction="file:///"></button><!-- scheme-file-slash-slash-slash-only --> |
| <button formaction="file:test"></button><!-- scheme-file-no-slash --> |