在为 iOS 应用程序创建富文本编辑器时,我遇到了同样的问题。每次我<blockquote>
在文本字段中插入标签并按下Enter时,都无法摆脱块引用。
经过一番研究,我找到了一个可行的解决方案。
查找内部 HTML 标签:
function whichTag(tagName){
var sel, containerNode;
var tagFound = false;
tagName = tagName.toUpperCase();
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount > 0) {
containerNode = sel.getRangeAt(0).commonAncestorContainer;
}
}else if( (sel = document.selection) && sel.type != "Control" ) {
containerNode = sel.createRange().parentElement();
}
while (containerNode) {
if (containerNode.nodeType == 1 && containerNode.tagName == tagName) {
tagFound = true;
containerNode = null;
}else{
containerNode = containerNode.parentNode;
}
}
return tagFound;
}
检查块引用标签的出现:
function checkBlockquote(){
var input = document.getElementById('text_field_id');
input.onkeydown = function() {
var key = event.keyCode || event.charCode;
if( key == 13){
if (whichTag("blockquote")){
document.execCommand('InsertParagraph');
document.execCommand('Outdent');
}
}
};
}
触发按键事件:
<body onLoad="checkBlockquote();">
<!-- stuff... -->
</body>
我相信上面的代码可以轻松调整以满足您的需求。如果您需要进一步的帮助,请随时提出。