[SalesForce] Problem with Simple dialog box in jquery

I am using simple dialog for showing some custom popup having a iframe in it whose source is a VF page. Below is the code i am using for it in Javascript.

 function openDialog(var1,var2){
  if (var1 != null && var2 !=''){

   var pageURL = '/apex/myVFPage?id='+var1 +'&name='+var2;

    var sd = new SimpleDialog("Test", true);

    sd.setTitle("Message From Webpage");

    sd.createDialog();
     window.parent.sd = sd; 
     sd.setWidth("50%");

   //Specify the iFrame and give URL of VF page
    sd.setContentInnerHTML("<iframe src="+pageURL+" style='border:1;wiidth:460px;  min-height: 170px' ></iframe>");

     if ($j(sd.dialog).find('#InlineEditDialogX').size() == 0) {
     var close = $j("<a id='InlineEditDialogX' title='Close' tabindex='0'             href='javascript:void(0)' class='dialogClose'>Close</a>");

    close.mouseover(function() {

       this.className = 'dialogCloseOn';
        }).mouseout(function() {
          this.className = 'dialogClose';
          }).click(function() {

       // finally our on click handler which closes the dialog
        sd.hide();
       });
      // insert the new generated close button before the h2 tag so it'll show up on   the top right corner
    close.insertBefore($j(sd.dialog).find('.topLeft h2'));  
     } sd.show(); 

    }

}

I am calling this javascript function from my VF page button.

How can i close the dialog box from my iframe's VF page. And re-render my parent VF page to new href from the child VF page(i.e. in the iFrame).

Best Answer

You can use the postMessage function from within the iframe to tell the parent to close the dialog, see: http://davidwalsh.name/window-iframe

So in your function you would listen for a message from the iframe e.g. "closeMe" then remove the dialog.

Mark

Related Topic