TinyMCE 4を使用すると、かなり簡単な機能を備えたボタンを実装しようとしています。選択(強調表示)されたノードに対して、ボタン。setNode()を使用して選択したノードを更新するときのTinyMCE 4ノードの重複の問題
setNode()
機能を使用してノードを更新しています。問題は、既存のノードを予想どおりに更新するのではなく、重複したノードを取得することです。例えば
、私はTinyMCEの本体にこのテキストを持っていると言う:
<p>This is a paragraph.</p>
テキストをハイライト表示し、 "MyButtonという" クリックした後に期待される結果:私が代わりに取得しています何
<p class="updated">This is a paragraph.</p>
を:
をノードが複製されている(または同じノードでラップされている)なぜ理解するのか。
関連するコード:
<script type="text/javascript">
tinymce.init({
//...
setup: function(editor){
editor.addButton('MyButton', {
name: 'MyButton',
text: 'MyButton',
icon: false,
onclick: function() {
var selectedNode = window.parent.tinyMCE.activeEditor.selection.getNode(), //get the selected node
updatedNode = $(selectedNode).addClass('updated'); //perform desired modifications to it
updatedNode = updatedNode.get(0); //return the javascript element
//update the node:
window.parent.tinyMCE.activeEditor.selection.setNode(updatedNode);
}//end onclick
});//end addButton
}//end setup
});//end tinymce.init
</script>
EDIT:私は最終的に、このための回避策を見つけました。新しいノード(updatedContent
)を作成し、それを使用して選択したノードのコンテンツ(window.parent.tinyMCE.activeEditor.selection.setContent(updatedContent);
)を設定する代わりに、選択したノード(selectedNode
)を直接更新する必要があります。ように:
$(selectedNode).addClass('updated');