1

これを修正する必要があります... 1000ミリ秒ごとに発生するため、これは非常に面倒です!!!

完全なコードは次のとおりです。

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script>
function insertTextAtCursor() {
    var sel, range, html;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            range.insertNode( document.createTextNode('567') );
        }
    } else if (document.selection && document.selection.createRange) {
        document.selection.createRange().text = text;
    }
}
</script>


<div contenteditable onclick="insertTextAtCursor()">hi</div>


<script>
  setInterval(function() {
$("body").html($("body").html().replace(/567/g,'<b>abcde-fghi</b>'));
  },1000);
</script>
4

1 に答える 1

0

div にフォーカスがあるときに間隔を停止し、ぼかしで再開できます。また、ID を追加してそれらのコンテンツのみを置き換えることで、間隔関数を変更します。また、隠し要素で間隔とデータの置換を行うのが少しきれいな方法だと思います。

http://jsfiddle.net/lucuma/AKtvt/

function insertTextAtCursor() {
    var sel, range, html;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            range.insertNode( document.createTextNode('567') );
        }
    } else if (document.selection && document.selection.createRange) {
        document.selection.createRange().text = text;
    }
} 

function ReplaceData() {

    $("#contentdata").val($("#content").html().replace(/567/g,'<b>abcde-fghi</b>'));

    }

$(document).ready(function() {
    var ph=setInterval(ReplaceData,1000);


    $('#content').on("blur", function() {
       $('#content').html($('#contentdata').val());
        ph=setInterval(ReplaceData,1000);
    });

});

</p>

于 2012-05-31T23:06:16.657 に答える