diff --git a/js/media.popups.js b/js/media.popups.js
index c8e5fa2..79282d0 100644
--- a/js/media.popups.js
+++ b/js/media.popups.js
@@ -15,6 +15,15 @@
 namespace('Drupal.media.popups');
 
 /**
+ * Returns the element that triggered an event. Takes into account varying
+ * browser support for event source representation.
+ */
+function getEventSource (event) {
+  // Use the event's srcElement property if it exists. This will satisfy IE.
+  return event.srcElement || event.target || null;
+}
+
+/**
  * Media browser popup. Creates a media browser dialog.
  *
  * @param {function}
@@ -56,12 +65,28 @@ Drupal.media.popups.mediaBrowser = function (onSelect, globalOptions, pluginOpti
 
   browserSrc += '&' + $.param(params);
   var mediaIframe = Drupal.media.popups.getPopupIframe(browserSrc, 'mediaBrowser');
+  var frame;
+  // Get the iframe DOM element from the jQuery object.
+  if (mediaIframe) {
+    frame = mediaIframe.get(0);
+  }
   // Attach the onLoad event
-  mediaIframe.bind('load', options, options.widget.onLoad);
+  if (frame) {
+    // Internet Explorer needs us to use attachEvent() to register an onload
+    // handler on an iframe.
+    if (frame.attachEvent) {
+      frame.attachEvent('onload', options.widget.onLoad);
+    }
+    // All other browsers support accessing the onload property of the iframe
+    // directly.
+    else {
+      frame.onload = options.widget.onLoad;
+    }
+  }
+
   /**
    * Setting up the modal dialog
    */
-
   var ok = 'OK';
   var cancel = 'Cancel';
   var notSelected = 'You have not selected anything!';
@@ -99,13 +124,14 @@ Drupal.media.popups.mediaBrowser = function (onSelect, globalOptions, pluginOpti
 };
 
 Drupal.media.popups.mediaBrowser.mediaBrowserOnLoad = function (e) {
-  var options = e.data;
-  if (this.contentWindow.Drupal.media == undefined) return;
+  var source = getEventSource(e);
+
+  if (source.contentWindow.Drupal.media == undefined) return;
 
-  if (this.contentWindow.Drupal.media.browser.selectedMedia.length > 0) {
+  if (source && source.contentWindow.Drupal.media.browser.selectedMedia.length > 0) {
     var ok = (Drupal && Drupal.t) ? Drupal.t('OK') : 'OK';
-    var ok_func = $(this).dialog('option', 'buttons')[ok];
-    ok_func.call(this);
+    var ok_func = $(source).dialog('option', 'buttons')[ok];
+    ok_func.call(source);
     return;
   }
 };
