如果下面的代码按照我的预期运行,按下按钮会将 FORM 的内部 P 元素替换为另一个 FORM,并且会出现嵌套边框:
<form id="aa1" style="border: solid 2px blue; padding: 4px;">
<p>Original content</p>
</form>
<button type="button"
onclick="document.getElementById('aa1').innerHTML = '<form id=\'aa2\' style=\'border: solid 8px red; padding: 4px;\'><p>New content</p></form>';">
Click me
</button>
在 Chrome 119 和 Edge 118(在 Windows 上)中,情况并非如此:内部表单被剥离,原始段落被内部表单的内容替换。
我知道,HTML 中不允许嵌套表单。
我的问题是:所有浏览器的行为都是这样吗?这种行为是否在某处描述过?从什么版本的浏览器开始有这样的行为?
在 Fiddle 上尝试一下: https://jsfiddle.net/rnk9vms5/3/
我知道,HTML 中不允许嵌套表单。
那么为什么要尝试创建一些无效的 HTML 内容呢?
现代浏览器非常宽松,接受无效的 HTML,无论如何都会尝试呈现它并假设程序员可能想要什么。这并不意味着您应该依赖此类行为或故意编写无效的 HTML。
例如,网页包含以下无效 HTML 代码:
<p>Hello
将被大多数现代浏览器转换为:
<html>
<head></head>
<body>
<p>Hello</p>
</body>
</html>