背景色を変更すると、CKEditorはインラインスタイルが設定されているspan
要素内の選択されたコンテンツをラップします。背景色を変更しながらCKEditorの既存の属性をカスタム属性に再利用
私はインタラクティブビデオを作成するアプリケーションがあります:希望する瞬間に再生を止めることができます。この一時停止中に、視聴者はビデオの重要な瞬間にジャンプしたり、クイズに答えることができます。答えが間違っている場合はビデオ、その他はそうです。プレーヤの上にこのインタラクティブレイヤを作成するために、私はCKEditorを使っていくつかのカスタムプラグインを使ってインタラクティブな要素を作成します。
span[data-player-control] {
background-color: #3366FF;
color: #FFF;
border-radius: 10px;
padding: 10px;
}
<span data-player-control="play">My element</span>
data-player-control
属性の値が固定されていない
が(それはプラグインで指定することができます。プラグインの
一つは、カスタム属性data-player-control
でspan
要素を作成するために使用されます)、それはビデオの展示を制御するために使用されます。
エディタは要素の背景色を変更するために使用される場合、それは新しいspan
の要素のテキストをラップし、どのような結果には:
span[data-player-control] {
background-color: #3366FF;
color: #FFF;
border-radius: 10px;
padding: 10px;
}
<span data-player-control="play">
<span style="background-color:#FF0000">My element</span>
</span>
と、これら2つの入れ子span
要素、 2つの異なる背景色は望ましくない。
私は、その結果、インラインスタイルは、既存のspan
要素に適用される必要があります。
span[data-player-control] {
background-color: #3366FF;
color: #FFF;
border-radius: 10px;
padding: 10px;
}
<span data-player-control="play" style="background-color:#FF0000">
My element
</span>
はどのようにこれを達成することができますか?
dataFilterまたはhtmlFilterを使用するのは、入力または出力データで実行されるため、CKEditorのインラインインスタンスを入力または既存インスタンスとして実行するため、実行可能な解決策ではありません。変換を使用することは、実際のDOMではなく要素を表すために簡略化されたフォームを使用するため、解決策でもありません。
コンテンツを編集中に使用するコールバック関数はありますか(私の必要に応じてDOMを変更することができます)?
あなたが指摘している項目は、実際に私のニーズに問題があります。私は全体の画像についてより多くの文脈を与える質問を編集した。 'data-player-control'属性には他の効果があり、colorButtonプラグインを使用して背景色を設定した要素には常に適用しないでください。 –
あなたの質問を明確にしてくれてありがとう、それはまた、同様の問題を抱えている他のユーザーに役立つかもしれません。私はあなた自身で解決策を見つけたのを見ます、それはいいです;) – f1ames