Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 退格不';t在Firefox中删除contenteditable DIV的内部html标记_Javascript_Dom Events_Contenteditable - Fatal编程技术网

Javascript 退格不';t在Firefox中删除contenteditable DIV的内部html标记

Javascript 退格不';t在Firefox中删除contenteditable DIV的内部html标记,javascript,dom-events,contenteditable,Javascript,Dom Events,Contenteditable,我创建了一个属性为contenteditable=true的DIV,并添加了属性为contenteditable=false的子项,如span和a 我想测试一下是否可以用一个退格删除整个节点,但令我惊讶的是Firefox无法删除元素 此外,除Firefox外,这在所有主要的桌面浏览器中都能正常工作 这方面有什么线索,或者可能的解决办法是什么 在bugzilla上找到了确切的问题 好的!找到了解决方案。。。这比你想象的要简单得多。我实际上是在为链接插入html,所以使用 这仅在Firefox中是

我创建了一个属性为
contenteditable=true
的DIV,并添加了属性为
contenteditable=false
的子项,如
span
a

我想测试一下是否可以用一个退格删除整个节点,但令我惊讶的是Firefox无法删除元素

此外,除Firefox外,这在所有主要的桌面浏览器中都能正常工作
这方面有什么线索,或者可能的解决办法是什么


在bugzilla上找到了确切的问题

好的!找到了解决方案。。。这比你想象的要简单得多。我实际上是在为链接插入html,所以使用


这仅在Firefox中是必需的。其他浏览器将此视为预期,span have content contenteditable=false。

我也面临着同样可怕的错误,别无选择,只能制作一个基于javascript的复杂解决方案,用于侦听按键事件,如果按下backspace,插入符号刚好位于文本节点的起始偏移量,之前的节点是元素节点,然后删除整个元素节点

//信用:https://stackoverflow.com/a/25397485/104380
var isFF=!!navigator.userAgent.match(/firefox/i)
var editableElm=document.querySelector('div')
//听任何按键
如果(isFF)
editableElm.addEventListener('keydown',onKeydown)
函数onKeydown(e){
如果(e.key==“退格”){
var selection=document.getSelection();
//如果插入符号位于文本节点(0)的开头,请删除上一个元素
if(selection&&selection.anchorOffset==0)
selection.anchorNode.previousSibling.parentNode.removeChild(selection.anchorNode.previousSibling)
}
}

尝试删除Firefox上的主题词,好吗?
尝试在可编辑的div上添加“onkeydown”函数以停止事件传播(如下所示)。为我工作:


onKeyDown=(e)=>{e.stopPropagation();}

它的行为仍然有点古怪,但总比没有好:)(请投票影响他们来修复它)这会删除div之前的元素,而不是其中的内容。@TylerLazenby这是OP要求的。整个问题都是关于解决FF错误,其中最后一个节点不能被删除,而不是节点的文本内容,所以你在评论中说过,我引用OP:…整个节点可以通过一个退格删除
<div contentEditable="true">
   <a href="your/url/path" contentEditable="false">
     <span contentEditable="true">link here</span>
   </a>
</div>