将默认值设置为<p>,而不是在'designMode'中设置iframe </p>

时间:2013-10-10 01:18:00

标签: javascript css webkit wysiwyg designmode

来自未来穴居人的问候,

我正在尝试构建一个简单的wysiwyg,不幸的是我无法使用默认情况下使用段落而不是简单的换行符。然后我读到了这个:

Force browser to insert <p> tag when pressing Enter in a designMode IFrame

这个问题是在一年多前提出来的。通过链接,我看到webkit中的一些内容已经“解决”:https://bugs.webkit.org/show_bug.cgi?id=59961已解决:http://trac.webkit.org/changeset/109529

对不起,我没有达到速度,但这是什么意思:它是否已经解决,是否有办法在不进入JS和监控击键的情况下做到这一点?

如果没有,那么JS的解决方案是什么?监视“输入”,然后如何将选择包装在段落标记中?到目前为止,我尝试了这个,但它不起作用

$("#richTextField").keydown(function(e) {
alert("you pressed something");
if (e.keyCode == 13) {
alert("you pressed ENTER"); 
richTextField.document.execCommand('formatblock',false,"P");
}
});

根本不起作用 - 甚至不会抛出警报。

只是为了澄清......我想:

This is my first paragraph
<br>
This is my second paragraph
<br> 

现在正在发生什么,成为一个正常的

<p>This is my first paragraph</p>
<p>This is my second paragraph</p>

谢谢

1 个答案:

答案 0 :(得分:2)

其实我用JS来解决它。虽然下面的方法很简单,但它确实会导致复杂化,例如将段落标记插入列表项和大量换行符......我想你可以稍后在php中删除它。以下是任何需要它的人的代码:

$("#richTextField").contents().keydown(function(e) {
if (e.keyCode === 13) {
richTextField.document.execCommand('formatblock',false,"P");
}
});

或者你可以这样做,这在我看来更好用,因为上面的代码如果写了一些内容但没有点击输入,你根本就没有段落标记。

$("#richTextField").contents().keydown(function(e) {
richTextField.document.execCommand('formatblock',false,"P");
});

我能找到的唯一办法。如果有人知道另一个没有进入javascript并监控'enter'键,请发布。