2011-06-29 3 views
2

iframeを含むjquery-uiモーダルポップアップがあります。それはそう呼ばれる:jquery iframeFix implementation

$("#modalDiv").dialog({ 
     modal: true, 
     autoOpen: false, 
     height: '400', 
     width: '400', 
     position: ['150', '200'], 
     draggable: true, 
     resizable: false, 
     title: 'Loading...' 
    }); 

    $('#modalIFrame').attr('src', url); 
    $('#modalDiv').dialog('open'); 

問題は、モーダルをドラッグすることは非常にスケッチです。基本的にiframeがドラッグイベントをインターセプトしているためです。私は "iframeFix"ソリューションを実装しようとしていますが、動作しないようです。私は現在ようにポップアップからそれを呼び出しています:

window.parent.$("#modalDiv").draggable("option", "iframeFix", true); 

私はまた、これらの二つの方法で親ページからそれを試してみました:

$("#modalDiv").draggable("option", "iframeFix", true); 
    $("#modalIFrame").draggable("option", "iframeFix", true); 

ありません運。

答えて

1

iframeFixの仕組みが不明ですが、現在私が使用しているソリューションはここにあります。 jQuery UIのWebサイトにbug reportを追加しました.jQuery UIの次のリリースでは、この作業を進めているようです。

あなたのダイアログでサイズ変更ができないことがわかりましたので、次のように問題を解決する必要があります。サイズ変更可能なダイアログが必要な場合は、dialogdragstartdialogdragstart dialogresizestartに置き換え、同様にdialogdragstopdialogdragstop dialogresizestopに置き換える必要があります。

$("#modalDiv") 
    .dialog({ 
     modal : true, 
     autoOpen : false, 
     height : 400, 
     width : 400, 
     position : [ 150, 200 ], 
     draggable: true, 
     resizable: false, 
     title : 'Loading...' 
    }) 
    .bind('dialogdragstart', function() { 
     var overlay = $(this).find('.hidden-dialog-overlay'); 
     if (!overlay.length) { 
      overlay = $('<div class="hidden-dialog-overlay" style="position:absolute;top:0;left:0;right:0;bottom:0;z-order:100000;"></div>'); 
      overlay.appendTo(this); 
     } 
     else 
      overlay.show(); 
    }) 
    .bind('dialogdragstop', function() { 
     $(this).find('.hidden-dialog-overlay').hide(); 
    });