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;
}
block-quote タグの出現を確認しています。
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>
上記のコードは、ニーズに合わせて簡単に調整できると思います。さらにサポートが必要な場合は、お気軽にお問い合わせください。