Html 输入时的内容可编辑段落标记

Html 输入时的内容可编辑段落标记,html,wysiwyg,contenteditable,Html,Wysiwyg,Contenteditable,我想知道是否有一种可以接受的方法来强制所有主要浏览器插入段落标记,而不是在contentEditable为true时按enter键插入的默认标记 据我所知,IE自动插入p。但谷歌Chrome插入div标签,Firefox插入br(WTF?!) 提前谢谢 在浏览器中构建时,您无法更改该行为。您可以通过检测浏览器并相应地替换元素来解决此问题。很难看,我知道 还要检查WhatWG的背景:您可以使用document.execCommand('formatBlock',false,'p')在类似按键或向下

我想知道是否有一种可以接受的方法来强制所有主要浏览器插入段落标记,而不是在contentEditable为true时按enter键插入的默认标记

据我所知,IE自动插入p。但谷歌Chrome插入div标签,Firefox插入br(WTF?!)


提前谢谢

在浏览器中构建时,您无法更改该行为。您可以通过检测浏览器并相应地替换元素来解决此问题。很难看,我知道


还要检查WhatWG的背景:

您可以使用
document.execCommand('formatBlock',false,'p')
在类似
按键
向下键
等事件中,按enter键后使用段落。例如:

element.addEventListener('keypress', function(ev){
    if(ev.keyCode == '13')
        document.execCommand('formatBlock', false, 'p');
}, false);

我遇到了同样的问题,并找到了解决方案(CHROME、MSIE、FIREFOX),请按照链接中的代码进行操作

$(document).on('click','#myButton',function() {
    if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1)
        var str = $('#myDiv').html().replace(/<br>/gi,'').replace(/<div>/gi,'<br>').replace(/<\/div>/gi,'');
    else if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1)
        var str = $('#myDiv').html().replace(/<\/br>/gi,'').replace(/<br>/gi,'<br>').replace(/<\/br>/gi,'');
    else if (navigator.userAgent.toLowerCase().indexOf("msie") == -1)
        var str = $('#myDiv').html().replace(/<br>/gi,'').replace(/<p>/gi,'<br>').replace(/<\/p>/gi,'');    
    $('#myDiv2').removeClass('invisible').addClass('visible').text(str);
    $('#myDiv3').removeClass('invisible').addClass('visible').html(str);
});
$(文档).on('click','myButton',function(){
if(navigator.userAgent.toLowerCase().indexOf('chrome')>-1)
var str=$('#myDiv').html().replace(//br>/gi',).replace(//gi,
')).replace(//gi,,); else if(navigator.userAgent.toLowerCase().indexOf(“firefox”)>-1) var str=$('#myDiv').html().replace(//gi',).replace(//br>/gi,
')).replace(//gi',); else if(navigator.userAgent.toLowerCase().indexOf(“msie”)=-1) var str=$('#myDiv').html().replace(//
/gi',).replace(///gi',
')).replace(///gi',); $('#myDiv2').removeClass('invisible').addClass('visible').text(str); $('#myDiv3').removeClass('invisible').addClass('visible').html(str); });

你提到的浏览器中只有Internet Explorer才有意义,这难道不是很荒谬吗?顺便说一下,当你在另一个段落中按Enter键时,Chrome会创建新的段落。这是一个很好的问题!我一点也不明白为什么浏览器的实现方式如此不同。当然,从概念的角度来看,
和具有非常不同的含义(示例说明:)。当然,在网络标准的推动下,要求浏览器始终如一地实现这一点并不过分。您的链接已断开。这就是为什么我不断重复的原因:不要把简单的链接粘贴到网站上,努力提供一个自我解释的答案。而不是添加看似合理的链接作为奖励。我不能代表所有浏览器,但firefox确实会在按Enter键时将文本包装为p…问题是它还会自动插入

导致如下情况:我的文本

。。。这对我来说似乎很奇怪。formatBlock会重新格式化所有内容。所以如果你有一个h1,它会变成一个段落标签