是否有在渲染过程中被忽略的HTML元素?

Pau*_*jan 6 html

我有这个标记

<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调用时,我们将检查我们是否在"用户内容"节点上运行,如果我们在那里或任何一个节点上行走,则不允许访问儿童.

rfu*_*duk 8

如果你使用div的唯一问题是换行,为什么不给它风格:display: inline;

如果您可以更具体地解决您的问题...为什么必须包装它?

基本上,div就是你想要的,只是适当的风格.


Pau*_*jan 0

我最终不得不解析内容才能决定使用 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)