2011-03-15 65 views
2

我偶然发现了Firefox中的一个奇怪行为。我有一个动态创建的文本,其中我插入了一个包含链接的表单元素,以便能够通过post方法传递参数。理想情况下,它应该与文本一起流动,看起来像一个普通的锚。然而,尽管它在IE中正常显示,Firefox却在表单之前终止了段落,插入了不需要的换行符。 有没有人有一个想法,为什么会发生这种情况,并有一个解决方法/替代解决方案?HTML段标记在包含表单时自动关闭在Firefox中

结果在IE(OK):

<p class="article" >This is my paragraph and here goes my 
<form style="display: inline" name="link_form" action="link.html" method="post"> 
<input type="hidden" name="lnk_id" value="1" /><a class="link" href="#" onclick="link_form.submit()">link</a></form>**</p>** 

结果在Firefox(KO):

<p class="article" >This is my paragraph and here goes my**</p>** 
<form style="display: inline" name="link_form" action="link.html" method="post"> 
<input type="hidden" name="lnk_id" value="1" /><a class="link" href="#" onclick="link_form.submit()">link</a></form> 

在此先感谢

回答

4

这是完全正常的,在P标签只能包含内嵌元素,这不是一种形式的情况。 (请参阅http://www.w3.org/TR/html401/struct/text.html#h-9.3

由于HTML4规范允许您不关闭标签,因此Firefox会假设您在表单开始之前忘记关闭P标签,因此使用Firebug检查DOM时可以看到关闭标签,例。

+0

感谢您的快速回复。 所以你说IE浏览器有错误?任何想法如何解决这个问题? “display:inline”没有结果吗? – Argoron 2011-03-15 13:42:56

+1

@Argo:解决方法:不要使用“p”标签。尝试一个'div'代替。 – thirtydot 2011-03-15 13:44:07

+2

是的,IE浏览器有错误。把段落放在表单中,而不是其他方式(使用你的样式提交按钮看起来像一个链接,而不是与顶部的一些JS断开的链接)。元素是如何显示的*不会改变它的*是什么,因此不会改变其允许在HTML中存在的位置。 – Quentin 2011-03-15 13:45:06

相关问题