2017-06-21 16 views
0

このthreadから、contenteditable divに要素を挿入した後でキャレットを設定する方法を知りました。しかし、私はソフトキーボードが開くのを防ぐようにしたいと思います。selection.addRange()を使用しているときにソフトキーボードが開かないようにする

デフォルト/ stopPropagationを防止するためにonfocusイベントfiddle based on the above threadを受信するようにcontenteditableを作成しましたが、動作しませんでした。どんな提案も素晴らしいだろう!

function insertNodeAtCaret(node) { 
if (typeof window.getSelection != "undefined") { 
    var sel = window.getSelection(); 
    if (sel.rangeCount) { 
     var range = sel.getRangeAt(0); 
     range.collapse(false); 
     range.insertNode(node); 
     range = range.cloneRange(); 
     range.selectNodeContents(node); 
     range.collapse(false); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } 
} else if (typeof document.selection != "undefined" && document.selection.type != "Control") { 
    var html = (node.nodeType == 1) ? node.outerHTML : node.data; 
    var id = "marker_" + ("" + Math.random()).slice(2); 
    html += '<span id="' + id + '"></span>'; 
    var textRange = document.selection.createRange(); 
    textRange.collapse(false); 
    textRange.pasteHTML(html); 
    var markerSpan = document.getElementById(id); 
    textRange.moveToElementText(markerSpan); 
    textRange.select(); 
    markerSpan.parentNode.removeChild(markerSpan); 
} 
} 

function blockKeyboard(event) { 
    event.stopImmediatePropagation(); 
    event.preventDefault(); 
    event.stopPropagation(); 
    console.log(event); 
} 

答えて

0

私は、画像を挿入する前に、それはfalseにnode.contentEditableを設定することによって行うことができることを実現し、トリックを行うだろう挿入した後に戻ってtrueにリセットします。

関連する問題