我有这个标记
<html>
... some HTML ...
Run Code Online (Sandbox Code Playgroud)
我需要用这样的元素包装它:
<html>
<div class="user-content">
... some HTML ...
</div>
Run Code Online (Sandbox Code Playgroud)
问题是... some HTML ...,从原始文本到复杂标记可能有很多不同的东西.
<div>如果我使用a <div>,那么它会增加一个块级别的中断.如果我有意义的话
Paul is cool
Run Code Online (Sandbox Code Playgroud)
我现在有
<div class="user-content">
Paul is cool
</div>
Run Code Online (Sandbox Code Playgroud)
这会迫使换线.
<span>如果我使用了一个<span>奇怪的东西,当我有一个<span>包含a 时开始发生<div>.例如,跨度的宽度显示为0px,这使得javascript对该节点不太满意.
我可以使用更好的标签吗?
说来话长.我需要节点存在于HTML中,因为我正在运行不受信任的javascript,我不希望javascript能够在该节点内部行走.为此,我们已经沙箱化了所有DOM功能,并且在每次DOM调用时,我们将检查我们是否在"用户内容"节点上运行,如果我们在那里或任何一个节点上行走,则不允许访问儿童.
如果你使用div的唯一问题是换行,为什么不给它风格:display: inline;?
如果您可以更具体地解决您的问题...为什么必须包装它?
基本上,div就是你想要的,只是适当的风格.
我最终不得不解析内容才能决定使用 a<span>或 a <div>。它并不完美,但它有效。
这是我的内联元素列表,以防它对任何人有帮助
if (starts_with($html, '<') &&
!starts_with($html, '<a ') &&
!starts_with($html, '<input ') &&
!starts_with($html, '<iframe ') &&
!starts_with($html, '<img ') &&
!starts_with($html, '<span ') &&
!starts_with($html, '<script ') &&
!starts_with($html, '<input>') &&
!starts_with($html, '<span>') &&
!starts_with($html, '<script>')) {
Run Code Online (Sandbox Code Playgroud)