jquery ドラッグ & ドロップでノックアウト js を使用しています。Chrome、Firefox、IE9 ではうまく機能しますが、IE8 ではうまく機能しません。実際のコードを投稿することはできませんが、バグを再現できる jsfiddle の例を作成しました。http://jsfiddle.net/wired1/P9hns/20/をご覧ください 。最新の Firefox、Chrome、および IE9 でうまく動作します。ただし、IE8 でドラッグしようとすると、次のエラーが発生します。
IE8 エラー #1
SCRIPT5007: プロパティ 'options' の値を取得できません: オブジェクトが null または未定義の jquery-ui.1.8.18.js、行 1412 文字 13
jquery ui で参照されているコードは次のとおりです。
$.ui.plugin.add("draggable", "cursor", {
start: function(event, ui) {
var t = $('body'), o = $(this).data('draggable').options;
if (t.css("cursor")) o._cursor = t.css("cursor");
t.css("cursor", o.cursor);
},
stop: function(event, ui) {
var o = $(this).data('draggable').options;
if (o._cursor) $('body').css("cursor", o._cursor);
}
});
これは stop 関数内の変数 o の宣言です: var o = $(this).data('draggable').options;
jquery ui でこれらの 2 行をコメント アウトすると、次のエラーが発生します。
IE8 エラー #2
SCRIPT5007: プロパティ 'options' の値を取得できません: オブジェクトが null または未定義の jquery-ui.1.8.18.js、行 1439 文字 38
それは次のことを示しています。
$.ui.plugin.add("draggable", "scroll", {
start: function(event, ui) {
var i = $(this).data("draggable");
if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();
},
drag: function(event, ui) {
var i = $(this).data("draggable"), o = i.options, scrolled = false;
........................
これは、上記のスニペットの最後の行で、o = i.optionsです。
{scroll: false} を jqueryui ドラッグ可能なオプションとして設定すると、エラーはなくなりますが、それでも機能しません。
ドラッグを開始すると、マウスのクリックが解除されていなくても、すべてのイベントが順番に発生するようです (jsfiddle でコード テストを実行している場合は、コンソールを見てログを確認してください)。
それはjquery uiの問題ですか、それとも何か間違っていますか? これに関するヘルプは大歓迎です。