1

最近、Opera で execCommand() を使用する必要がありました。問題は、この関数で背景色 (またはテキストの色) を変更しようとすると、すべてが期待どおりに機能しますが、複数の色を混ぜると予期しない動作が発生することです。私が何を意味するかを理解するためにテストページを作成しました:

<html><head>
<script type="text/javascript">
function changecolor(color) {
 document.execCommand ('ForeColor', false, color);
 document.getElementById('source').innerHTML = document.getElementById('content').innerHTML;
}       
</script>
</head>

<body>
    <button onclick="changecolor('red');">Red</button>
    <button onclick="changecolor('blue');">Blue</button>
    <div contenteditable="true" id="content">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

    <textarea id="source" style="margin-top:100px;width:800px;height:200px;"></textarea>
</body>

( jsfiddle での動作を参照してください)

したがって、最新バージョンの Opera で 2 つの色を混ぜてみると、私の言いたいことがわかるでしょう。

4

1 に答える 1

0

私が見ているもの:選択範囲が複数の色にまたがっており、適用しようとしているのと同じ色で終わっている場合、何も起こりません。別の色で終わると、古い色の一部が削除されますが、新しい色は適用されません。

Operaの既存のバグCORE-24880に似ているように聞こえます。「execCommand('bold')は、選択範囲の一部が太字であっても、選択範囲を太字にする必要があります」。このバグをフォローアップして、修正に近づけてみます。

于 2012-07-23T22:32:12.963 に答える