formatBlock命令不会覆盖列表项上的现有块

lqe*_*qez 6 javascript wysiwyg execcommand

请参阅http://jsfiddle.net/4aQtk/3/

我试图改变livia的风格execcommand("formatBlock",...).它适用于普通段落节点,但在列表项上创建节点.

Firefox 27:好的,样式元素(p,h1,h2)只包含li元素中的文本.(预期)

<ul>
    <li>
        <h1>text</h1>
    </li>
    <li>another text</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Chrome 33:失败,formatBlock命令制动ul成几个uls并ul用样式元素换行.

<h1>
    <ul>
        <li>
            text
        </li>
    </ul>
</h1>
<ul>
    <li>another text</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如何防止在它们上创建节点?

Ste*_*cke 1

如果将li的内容包装到div中,它就可以正常工作。

<ul>
    <li><div>list item 1</div></li>
    <li><div>list item 2</div></li>
    <li><div>list item 3</div></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

h1 标签不是无序列表的有效子标签,因此它会将其包装在父 ul 之外,并将新的 ul 放入 h1 标签内。因为 h1 只是替换了 div,所以不再有问题了。

我希望这有帮助。

编辑:

它适用于段落的事实是它只是用 h1 替换 p 标签,因此最好的方法应该是 h1 位于段落内。