Lightbox2 - How to to open a lightbox from a Flash movie

Last modified: December 30, 2008 - 17:51

Taken from #324365: Open Lightbox2 from Flash movie - credit goes to nathan573.

To open a lightbox from a Flash movie you basically have to hit a javascript function that clicks an invisible lightbox link.

First, put this on your page somewhere:

<script type="text/javascript">
function openLightbox() {
fireEvent(document.getElementById("idOfYourLink"),'click');
}

function fireEvent(obj,evt){
var fireOnThis = obj;
if( document.createEvent ) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent( evt, true, false );
fireOnThis.dispatchEvent(evObj);
} else if( document.createEventObject ) {
fireOnThis.fireEvent('on'+evt);
}
}
</script>

Then create your HREF link to lightbox, like you normally would, although make it empty:

<a href="/path/to/pic/or/page" rel="lightframe[overlayWindowName|width:920px; height:540px; scrolling: no;]" id="idOfYourLink"></a>

Then call the following from your Flash button:

  getURL("javascript:openLightbox();", "_self");

Put the empty link somewhere it won't get in the way - keep it close to the SCRIPT for ease-of-maintenance.

Advantages are that you don't have to code the link destination into the Flash movie, it's just a generic trigger.

Disadvantages are that this is a bit kludgy and you have have add new js, html and Flash code for each different flash button/lightbox. I'd be curious to know if there is a better way of doing this, but this is what I came up with after a couple hours of Googling.

jQuery

raff77 - February 11, 2009 - 10:36

If your using lightbox 2 your using jQuery, why not use it. You can also write dynamic links from your flash:

// ACTIONSCRIPT

ExternalInterface.call("createLightbox", "124", "lightboxCollection");
ExternalInterface.call("clickLink", "124);

// JAVASCRIPT

Create a link:

function createLightBox(nid, boxName)
{
$("#myDivId").append(' ');
Lightbox.initList();
}

Click a link

function clickLink(nid)
{
$("#dynamicLink"+nid).click();
}

IMPORTANT You need to remember to re-init the lightbox on dynamicly created links.

Lightbox.initList();

Cheers

 
 

Drupal is a registered trademark of Dries Buytaert.