わかりましたので、私は先週かそこらで取り組んできた問題を抱えており、私が知っている、または見つけることができるすべてを試しました。私は YUI 2.x エディターを使用しており、ユーザーは重い書式設定を行っています。<span>ユーザーがクリックしたときに選択したテキストをラップする必要があるページに外部ボタンがありますが、書式設定を失うことなくこれを行う必要があります。何らかの理由で、次のようにすると、選択範囲内のすべての書式設定が消去されます。
var sel = myEditor._getSelection();
var newEl = '<span>' + sel + '</span>';
myEditor.execCommand('inserthtml', newEl);
_getSelectedElement()したがって、これを解決するには、 withを使用し_createCurrentElement('span')てスタイル要素を追加し直すのが最善の方法だと思います。ここに私がこれまでに持っているものがあります:
function createSpan() {
var el = myEditor._getSelectedElement();
var sel = myEditor._getSelection();
// IE support
if (document.selection) {
sel = myEditor._getDoc().selection.createRange();
newText = sel.text;
}
else {
newText = sel;
}
// Create the new element with the old styles
myEditor._createCurrentElement('span', {color: el.style.color, fontSize: el.style.fontSize, fontFamily: el.style.fontFamily});
myEditor._selectNode(myEditor.currentElement[0]);
myEditor.currentElement[0].innerHTML = newText;
return myEditor.currentElement[0];
}
これ_getSelectedElement()は、正しいスタイルの要素を適切に返す場合にうまく機能しますが、ユーザーが段落全体を選択すると、BODY. BODYにはスタイルがないため、再び迷子になります 。
基本的に、ツールバーの Bold ボタンのように動作する必要がありますが、 a<span>と は使用しません<b>。なぜこれが難しいのですか?
アイデアや提案はありますか?ありがとう!