フォーラムを構築し、Ckeditor を使用してメッセージを投稿する - フォーム内でテキストエリアを使用すると問題なく動作します。ユーザーが自分の投稿を編集できるようにしたいので、インラインで ckeditor を使用して、ユーザーが自分の投稿をクリックすると、メッセージが ckeditor に置き換えられます。それは今のところうまくいき、見栄えがします。ただし、保存ボタンは無効になっています。全体をフォームで囲みましたが、もちろん、ckeditor はテキスト領域ではなく div になっているため、フォームが機能しないと思います。では、データを PHP に渡すにはどうすればよいでしょうか。
もう 1 つの問題は、Ckeditor が携帯電話で動作しないように見えることです。モバイル向けの簡単なフォールバック方法を思いつくことができますか?
これは、インライン エディターをレンダリングするために使用しているコードです。
// 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('click', onClick, false);
else if (window.attachEvent)
document.body.attachEvent('onclick', onClick);
};
function onClick(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('edit_post') == -1) && name != 'body');
if (name == 'div' && element.className.indexOf('edit_post') != -1)
replaceDiv(element);
}
var editor;
function replaceDiv(div) {
if (editor)
editor.destroy();
editor = CKEDITOR.replace(div, {
uiColor: '#FFFFFF',
toolbar: [
['Save', 'Cut', 'Copy', 'Paste', 'PasteFromWord', '-', 'Undo', 'Redo', '-', 'Scayt'],
'/',
['Bold', 'Italic', 'Underline', 'Blockquote', '-', 'Link', 'Unlink', '-', 'Image', 'Smiley', 'oembed']
]
});
}