1

ダブルクリックするとdivを選択する機能がありますが、問題は後で選択を解除できないことです。スクリプトCSSは次のとおりです。

    div.editable
    {
        border: solid 2px Transparent;
        padding-left: 15px;
        padding-right: 15px;
    }

    div.editable:hover
    {
        border-color: black;
    }

</style>

脚本:

    // Uncomment the following code to test the "Timeout Loading Method".
    // CKEDITOR.loadFullCoreTimeout = 5;

    window.onload = function() {
        // Listen to the double click event.
        if ( window.addEventListener )
            document.body.addEventListener( 'dblclick', onDoubleClick, false );
        else if ( window.attachEvent )
            document.body.attachEvent( 'ondblclick', onDoubleClick );

    };

    function onDoubleClick( ev ) {
        // Get the element which fired the event. This is not necessarily the
        // element to which the event has been attached.
        var element = ev.target || ev.srcElement;

        // Find out the div that holds this element.
        var name;

        do {
            element = element.parentNode;
        }
        while ( element && ( name = element.nodeName.toLowerCase() ) &&
            ( name != 'div' || element.className.indexOf( 'editable' ) == -1 ) && name != 'body' );

        if ( name == 'div' && element.className.indexOf( 'editable' ) != -1 )
            replaceDiv( element );
    }

    var editor;

    function replaceDiv( div ) {
        if ( editor )
            editor.destroy();

        editor = CKEDITOR.replace( div );
    }

</script>

分割:

<div class="editable" style="height:490px;overflow:auto;" id="text2">
<p>Click Here to edit</p>";
</div>

私が達成したいのは、外側をクリックするか、別のオブジェクトまたはボタンをクリックすると、divが自動的に選択解除されることです。

4

1 に答える 1

0

すでにダブルクリックを処理しているのと同じ方法です。

// Listen to the click event.
if ( window.addEventListener )
  document.body.addEventListener( 'click', yourCallback, false );
else if ( window.attachEvent )
  document.body.attachEvent( 'click', yourCallback );

このイベントは、別のクリックハンドラーがの子要素にアタッチされるまで発生しますbody。でyourCallback編集モードを終了できます。

于 2013-01-06T23:11:09.880 に答える