Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
customable size - Test for a popunder working in ff 3-12, chrome 10-18, ie6-9
<!DOCTYPE html>
<html>
<head>
<meta content="Hans-Peter Buniat" name="author">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Form-Submit Popunder</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>
<form id="testSubmit" action="http://www.google.com">
<input type="submit" />
</form>
<script type="text/javascript">
/* use jQuery as container for more convenience */
(function($) {
/**
* Create a popunder
*
* @param sUrl Url to open as popunder
*
* @return jQuery
*/
$.popunder = function(sUrl, options) {
var bSimple = $.browser.msie,
run = function() {
$.popunderHelper.open(sUrl, bSimple, options);
};
(bSimple) ? run() : window.setTimeout(run, 1);
return $;
};
/* several helper functions */
$.popunderHelper = {
/**
* Helper to create a (optionally) random value with prefix
*
* @param string name
* @param boolean rand
*
* @return string
*/
rand: function(name, rand) {
var p = (name) ? name : 'pu_';
return p + (rand === false ? '' : Math.floor(89999999*Math.random()+10000000));
},
/**
* Open the popunder
*
* @param string sUrl The URL to open
* @param boolean bSimple Use the simple popunder
*
* @return boolean
*/
open: function(sUrl, bSimple, options) {
var _parent = self,
sToolbar = (!$.browser.webkit && (!$.browser.mozilla || parseInt($.browser.version, 10) < 12)) ? 'yes' : 'no',
sOptions,
popunder,
height = (options && options.height) ? options.height : (screen.availHeight - 122).toString(),
width = (options && options.width) ? options.width : (screen.availWidth - 122).toString();
if (top != self) {
try {
if (top.document.location.toString()) {
_parent = top;
}
}
catch(err) { }
}
/* popunder options */
sOptions = 'toolbar=' + sToolbar + ',scrollbars=yes,location=yes,statusbar=yes,menubar=no,resizable=1,width=' + width;
sOptions += ',height=' + height + ',screenX=0,screenY=0,left=0,top=0';
/* create pop-up from parent context */
popunder = _parent.window.open(sUrl, $.popunderHelper.rand(), sOptions);
if (popunder) {
popunder.blur();
if (bSimple) {
/* classic popunder, used for ie*/
window.focus();
try { opener.window.focus(); }
catch (err) { }
}
else {
/* popunder for e.g. ff4+, chrome */
popunder.init = function(e) {
with (e) {
(function() {
if (typeof window.mozPaintCount != 'undefined') {
var x = window.open('about:blank');
x.close();
}
try { opener.window.focus(); }
catch (err) { }
})();
}
};
popunder.params = {
url: sUrl
};
popunder.init(popunder);
}
}
return true;
}
};
})(jQuery);
$('#testSubmit').submit(function() {
jQuery.popunder('http://www.fluege.de',{width:300, height:300}).popunder('http://www.flug24.de');
});
</script>
</body>
</html>
@hpbuniat

This comment has been minimized.

Copy link

@hpbuniat hpbuniat commented Aug 9, 2012

I moved the my original popunder-gist into a project (hpbuniat/jquery-popunder) and integrated your enhancements. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment