使用iframe URL的jQuery UI对话框

时间:2013-01-28 19:51:45

标签: javascript iframe dialog modal-dialog

我使用nyroModal和Fancybox作为网站的工具,但在这个例子中我必须使用jQuery UI的对话框工具。我需要此对话框来加载页面。我相信我以前做过这件事,但我遇到的一切似乎都比应有的复杂。我不能使用像...这样的东西。

$( "#dialog" ).dialog({
      autoOpen: false,
      modal: true,
      url: http://www.google.com
      });

<button id="dialog">Open Dialog</button>

并在简单的iframe中打开页面?提前谢谢。


我确实发现我有这段代码,

<script>
  //$.fx.speeds._default = 500;  
  $(function() {    
    $( "#dialog" ).dialog({      
    autoOpen: false,      
    show: "fade",   
    hide: "fade",
            modal: true,            
            open: function () {$(this).load('nom-1-dialog-add-vessels.html');},                     
            height: 'auto',            
            width: 'auto',        
            resizable: true,    
            title: 'Vessels'    });     

    $( "#opener" ).click(function() {      
    $( "#dialog" ).dialog( "open" );      
    return false;   
    });  
  });  
  </script>

<div id="dialog"></div><button id="opener">Open Dialog</button>

但它没有加载实际页面。

3 个答案:

答案 0 :(得分:32)

url不是jQuery UI dialog中的选项之一。

对我有用的一件事就是在你的对话框iframe内加div,并在open事件上设置其url属性。

像:

<div id="dialog">
    <iframe id="myIframe" src=""></iframe>
</div>
<button id="dialogBtn">Open Dialog</button>

和JS:

$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    height: 600,
    open: function(ev, ui){
             $('#myIframe').attr('src','http://www.jQuery.com');
          }
});

$('#dialogBtn').click(function(){
    $('#dialog').dialog('open');
});

你会发现在iframe上需要一些样式才能让它看起来不错。

#myIframe{
  height: 580px;
}

编辑:工作版本 - http://jsbin.com/uruyob/1/edit

答案 1 :(得分:3)

基于Floyd Pink和您的代码,我整合了一段代码。点击http://jsfiddle.net/Nz9Q8/

 $(function () {
  $("#dialog").dialog({
    autoOpen: false,
    show: "fade",
    hide: "fade",
    modal: true,
    open: function (ev, ui) {
      $('#myIframe').src = 'http://www.w3schools.com';
    },
    height: 'auto',
    width: 'auto',
    resizable: true,
    title: 'Vessels'
  });

  $("#opener").click(function () {
    $("#dialog").dialog("open");
    return false;
  });
});

答案 2 :(得分:0)

我尝试过类似的事情。请检查此http://jsfiddle.net/P2Q5U/

<div id="dialogContent" title="Basic dialog">
  <iframe src="http://www.w3schools.com"></iframe>
</div>
<button id="dialog">Open Dialog</button>

 $(function () {
   $("#dialogContent").dialog({
     autoOpen: false,
     modal: true
   });

   $('#dialog').click(function () {
     $("#dialogContent").dialog( "open" );
   });
 });