1

We develop browser extensions for Google Chrome, Firefox and Safari. We need to insert an iframe in Gmail (https://mail.google.com/) in our Firefox extension. I created a JavaScript code that inserts the iframe to the page with jQuery. Here is the code:

JavaScript code:

var $container = jQuery('<div id="ws_login_overlay" style="position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; z-index: 9999999; background: rgba(64, 64, 64, 0.8);"></div>');
$container.append('<iframe width="760" height="510" id="myframe" style="border: 1px solid grey; margin: 80px auto 0px auto; display: table; border-radius: 8px;" src="'+Utils.getUrl("content/login/login_iframe.html?url="+encodeURIComponent(WS.config.URLs.website.web_login+'#'+reply.ws_uid))+'"></iframe>');
jQuery("body").append($container);

Utils.getUrl = function(filename, preferSecure) {
    return WS.getURL(filename, preferSecure);
};

/* Function to retrieve the relative URL/URI of a file in the platform's file system. */
WS.getURL = function(filename, preferSecure) {
    if (typeof filename !== "string") {
        filename = "";
    } else if (filename.substr(0, 1) === "/") { /* Remove forward slash if it's the first character, so it matches with the base URLs of the APIs below. */
        filename = filename.substr(1);
    }

    switch (Sys.platform) {
        case 'mozilla':
            if (typeof exports === 'undefined') { // Means we're in a content script.
                return self.options.extensionURL + filename;
            }
            return require("sdk/self").data.url("../lib/" + filename);
    }
};

login_iframe.html:

<style>
html, body, iframe {
    margin: 0;
    border: 0;
    padding: 0;
    display: block;
}
</style>
<iframe width="760" height="510" id="iframe"></iframe>
<script src="login_iframe.js"></script>

login_iframe.js:

// Get URL parameter.
function GetURLParameter(sParam) {
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if ((sParameterName.length >= 2) && (sParameterName[0] === sParam)) {
            return decodeURIComponent(sParameterName[1]);
        }
    }
    return null;
}

document.getElementById("iframe").src = GetURLParameter("url");

I checked and (typeof exports === 'undefined') is true, but the problem is that the iframe is empty in Firefox, it's HTML is <iframe id="myframe" style="border: 1px solid grey; margin: 80px auto 0px auto; display: table; border-radius: 8px;" src="resource:[removed_link]" height="510" width="760"></iframe> and the src attribute is invalid. How do I fix the src attribute to show the correct iframe?

JNat
  • 1,456
  • 4
  • 34
  • 37
Uri
  • 2,992
  • 8
  • 43
  • 86
  • I inserted iframe to https on bing with this addon template here: https://gist.github.com/Noitidart/9406437 – Noitidart Jan 01 '15 at 20:51

0 Answers0