I have a select box that calls window.open(url)
when an item is selected. Firefox will open the page in a new tab by default. However, I would like the page to open in a new window, not a new tab.
How can I accomplish this?
I have a select box that calls window.open(url)
when an item is selected. Firefox will open the page in a new tab by default. However, I would like the page to open in a new window, not a new tab.
How can I accomplish this?
Specify window "features" to the open
call:
window.open(url, windowName, "height=200,width=200");
When you specify a width/height, it will open it in a new window instead of a tab.
See https://developer.mozilla.org/en-US/docs/Web/API/Window.open#Position_and_size_features for all the possible features.
width
and height
are not enough and not even necessary in newer Chrome versions. You need to specify menubar=no
to be able to open on a popup. –
Berton You don't need to use height, just make sure you use _blank
, Without it, it opens in a new tab.
For a empty window:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
For a specific URL:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
is necessary when the JS is invoked from a button or anchor element. –
Judaize location=0
in the parameters. I would also suggest naming the window instead of using using the _blank
target, so that the same window is used again if the user clicks several times the element that opens the popup, and chaining with focus()
so that already an opened popup gets the focus : window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
–
Mcdowell I may be wrong, but from what I understand, this is controlled by the user's browser preferences, and I do not believe that this can be overridden.
window.open("", "poop", "height=200,width=200,modal=yes,alwaysRaised=yes");
still opens a new tab in my Opera, because I have configured it to always open a new tab instead of new windows. –
Snowberry window.open
in different ways, because IE 11 will still open the popup in a new tab if the user set's that as their browser preference. It doesn't seem to be standardized acros all browsers. –
Steinbok location=0
parameter when opening the window. It works and with it both Firefox 76 and Internet Explorer 11 renounce to use their popup blockers. –
Mcdowell Try:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
I have some code that does what your say, but there is a lot of parameters in it. I think these are the bare minimum, let me know if it doesn't work, I'll post the rest.
OK, after making a lot of test, here my concluson:
When you perform:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
or whatever you put in the destination field, this will change nothing: the new page will be opened in a new tab (so depend on user preference)
If you want the page to be opened in a new "real" window, you must put extra parameter. Like:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
After testing, it seems the extra parameter you use, dont' really matter: this is not the fact you put "this parameter" or "this other one" which create the new "real window" but the fact there is new parameter(s).
But something is confused and may explain a lot of wrong answers:
This:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
And this:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
will NOT give the same result.
In the first case, as you first open a page without extra parameter, it will open in a new tab. And in this case, the second call will be also opened in this tab because of the name you give.
In second case, as your first call is made with extra parameter, the page will be opened in a new "real window". And in that case, even if the second call is made without the extra parameter, it will also be opened in this new "real window"... but same tab!
This mean the first call is important as it decided where to put the page.
You might try following function:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
The HTML code for execution:
<a href="#" onclick="open('http://www.google.com')">google search</a>
popup.location = URL;
? The window.open()
call should open it to the proper URL, and in your code example, URL
is not defined so it is going to fall back to the experimental (and not widely support) URL object. While using it for that is debatable, I'm curious what the motivations are for its use here? –
Queeniequeenly You shouldn't need to. Allow the user to have whatever preferences they want.
Firefox does that by default because opening a page in a new window is annoying and a page should never be allowed to do so if that is not what is desired by the user. (Firefox does allow you to open tabs in a new window if you set it that way).
The key is the parameters :
If you provide Parameters [ Height="" , Width="" ] , then it will open in new windows.
If you DON'T provide Parameters , then it will open in new tab.
Tested in Chrome and Firefox
I just tried this with IE (11) and Chrome (54.0.2794.1 canary SyzyASan):
window.open(url, "_blank", "x=y")
... and it opened in a new window.
Which means that Clint pachl had it right when he said that providing any one parameter will cause the new window to open.
-- and apparently it doesn't have to be a legitimate parameter!
(YMMV - as I said, I only tested it in two places...and the next upgrade might invalidate the results, any way)
ETA: I just noticed, though - in IE, the window has no decorations.
For me the solution was to have
"location=0"
in the 3rd parameter. Tested on latest FF/Chrome and an old version of IE11
Full method call I use is below (As I like to use a variable width):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
Interestingly, I found that if you pass in an empty string (as opposed to a null string, or a list of properties) for the third attribute of window.open, it would open in a new tab for Chrome, Firefox, and IE. If absent, the behavior was different.
So, this is my new call:
window.open(url, windowName, '');
try that method.....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
Answered here. But posting it again for reference.
window.open()
will not open in new tab if it is not happening on actual click event. In the example given the url is being opened on actual click event. This will work provided user has appropriate settings in the browser.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
Similarly, if you are trying to do an ajax call within the click function and want to open a window on success, ensure you are doing the ajax call with async : false
option set.
I think its not html target properties problem but you unchecked "open nw windows in a new tab instead" option in "tab" tab under firefox "options" menu. check it and try again.
I had this same question but found a relatively simple solution to it.
In JavaScript I was checking for window.opener !=null;
to determine if the window was a pop up. If you're using some similar detection code to determine if the window you're site is being rendered in is a pop up you can easily "turn it off" when you want to open a "new" window using the new windows JavaScript.
Just put this at the top of your page you want to always be a "new" window.
<script type="text/javascript">
window.opener=null;
</script>
I use this on the log in page of my site so users don't get pop up behavior if they use a pop up window to navigate to my site.
You could even create a simple redirect page that does this and then moves to the URL you gave it. Something like,
JavaScript on parent page:
window.open("MyRedirect.html?URL="+URL, "_blank");
And then by using a little javascript from here you can get the URL and redirect to it.
JavaScript on Redirect Page:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>
© 2022 - 2024 — McMap. All rights reserved.