2016-03-30 8 views
0

リッチテキストフィールドのデザインモードがソート可能なLI内にあるときに問題が発生します。問題は、LIを新しい位置にドラッグすると、designModeが 'Off'に変わるということです。正しいiframeをターゲットに設定することはできますが、designModeを元に戻すように指示すると無視されるようですが、なぜこれが起こっているのか誰にもわかりますか?読んでくれてありがとう。iframeの内容をjqueryUIのソート可能なリストアイテム内に編集可能

編集:jfiddle例:https://jsfiddle.net/LcLfaa8j/2/

function getRichTextField(itemId) { 
    console.log('get rich text field'); 
    return document.getElementById('rtf-iframe-' + itemId); 

}

$(ドキュメント).ready(関数(){

getRichTextField("sort-textItem-1").contentWindow.document.designMode = "On"; 

getRichTextField("sort-textItem-2").contentWindow.document.designMode = "On"; 

$("#text-areas").sortable({ 
    axis: 'y', 
    opacity: 0.8, 
    tollerence: 'pointer', 
    update: function(event, ui) { 
     var order = $(this).sortable("serialize", { key: "order" }); 
     console.log("New Order = " + order); 

     console.log('the iframe that was moved designMode is now Off...'); 

     var richText = getRichTextField($(this).data().uiSortable.currentItem.attr('id')); 

     console.log('TEST: the current is ' + $(this).data().uiSortable.currentItem.attr('id') + ' and designMode = ' + richText.contentWindow.document.designMode + ' doubleCheckOfRTFid = ' + $(richText).attr('id') + ' class = ' + $(richText).attr('class')); 

     richText.contentWindow.document.designMode = "On"; 

     console.log('just attempted to turn designMode back on... but it gets ignored'); 
    } 
    }); 

})。

+0

私は自信を持って、誰も何が起こっているのか分からないと言うことができます。漠然とした質問に対する有用で具体的な回答は得られません。問題を示す例を含める必要があります。誰も来ないし、あなたのためにすべての足をやることはありません。 – LinuxDisciple

+0

は頭を上げて、現時点での例を掲載しています。 – RON2015

+0

https://jsfiddle.net/LcLfaa8j/2/私は、designModeがオンの2つのiframeを持つ小さな例を作成しました。それらの中にあるLIはソート可能です。それらを再ソートし、そのうちの1つのみのdesignModeに注目してくださいクリックして新しい位置にドラッグすると、designModeがオフになり、それを元に戻す試みが失敗します。 – RON2015

答えて

0

これを修正してdesignModeを元に戻す前に、小さな遅延をsetTimeoutに追加するような感じです。これは唯一の解決策ですか?ちょっと興味があるんだけど。

1

これは部分的な回答に過ぎません。
designModeがオフになっていません。デフォルトではオフになっており、.designMode="on"を設定したドキュメントはドラッグすると削除されます(最初から再作成されます)。ドキュメントの1つにコンテンツを入れてドラッグすると、コンテンツが消えることがわかります。 iframeが新しい.contentWindowを取得しているように見えます。つまり、別の子ドキュメントもあります。
あなたは
今すぐ実行(今第二のiframeをドラッグ)

var before = getRichTextField("sort-textItem-2"); 
var beforecontentWindow=before.contentWindow; 

を実行して、インスペクタでこれを見ることができます:

var after = getRichTextField("sort-textItem-2"); 
var aftercontentWindow=after.contentWindow; 

===と参照を比較します

before === after ;//returns true because iframe is the same 
beforecontentWindow === aftercontentWindow ;//returns false because .contentWindow changed 

また、この投稿を参照してくださいJquery Sortable and Draggable between parent and child frame彼はドラッグを実装するのに問題があったゲーブルとソート可能ですが、最終的にはそれを稼働させました。 ドラッグされた理由はあなたのiframeに新しいcontentWindowを与えるのか分かりませんが、他の誰かがこれを基に構築することができます。

関連する問題