「:)」の絵文字を追加するとすぐにcontentEditable iframeにキャレットの位置を設定する際に問題があります。domの画像を含むcontentEditableのキャレット位置合わせ
あなたはどのように管理しますか?
は、ここで基本的なテンプレートです:私は、コードセクションを説明するためのより多くのコンテキストを追加
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
var init = function() { // initialization
this.editor = $('#wysiwyg');
this.editor.curWin = this.editor.prop('contentWindow');
this.editor.curDoc = this.editor.curWin.document;
this.editor.curDoc.designMode = "On";
this.editor.curBody = $(this.curDoc).contents().find('body');
this.editor.html = function (data) { // shortcut to set innerHTML
if (typeof data == "undefined")
return this.curBody.html();
this.curBody.html(data);
return $(this);
};
var emoji = function (data) { // replace every :) by an image
return data.replace(':)', '<img src="http:\/\/dean.resplace.net\/blog\/wp-content\/uploads\/2011\/10\/wlEmoticon-smile1.png"\/>');
};
var self = this;
this.editor.contents().find('body').keypress(function (ev) { // handler on key pressed
var me = $(this);
setTimeout(function() { // timeout so that the iframe is containing the last character inputed
var sel = self.editor.curWin.getSelection();
var offset = sel.focusOffset;
me.html(emoji(me.html()));
var body = $(self.editor.curDoc).find('body').get(0);
sel.collapse(body, offset); //here is where i set positionning
return;
}, 100);
return true;
});
};
</script>
</head>
<body onload="init()">
<iframe id="wysiwyg"></iframe>
</body>
</html>
StackOverflowの需要が、私にとっては明らかであるように思われます。だから、「クール・ストーリー・ブロー」のコメントを追加して申し訳ありませんが、これ以上説明できないものは私には見えません。とにかく、私はどんな質問にも開いています。
これは機能しますか?何が問題ですか?問題がなければ、これは問題のcodereview.stackexchange.comまたは詐欺師にとってより良いでしょうか? – rlemon
それは動作していますが、エモーティコンが追加されるとすぐに、キャレットの配置が非常に乱雑です。それは本当の問題です – Keil
jsfiddleまたはscreenshots経由で私たちを見せてください – rlemon