I have been working on a web app and for part of it I need to open a new window. I have this working on all browsers, my sticking point is with Google Chrome.
Chrome seems to ignore the window features which is causing me issues, the thing I'm struggling with is I need the address bar to be editable within the new window. FF, IE, Safari and Opera do this fine, Chrome does not.
My Code:
function popitup(url) {
newwindow=window.open(url, 'name', 'toolbar=1,scrollbars=1,location=1,statusbar=0,menubar=1,resizable=1,width=800,height=600');
if (window.focus) {
newwindow.focus()
}
return false;
}
This question is related to
javascript
google-chrome
The other answers are outdated. The behavior of Chrome for window.open
depends on where it is called from. See also this topic.
When window.open
is called from a handler that was triggered though a user action (e.g. onclick event), it will behave similar as <a target="_blank">
, which by default opens in a new tab. However if window.open
is called elsewhere, Chrome ignores other arguments and always opens a new window with a non-editable address bar.
This looks like some kind of security measure, although the rationale behind it is not completely clear.
Why is this still so complicated in 2021? For me I wanted to open in a new chrome window fullscreen so I used the below:
window.open("http://my.url.com", "", "fullscreen=yes");
This worked as exepected opening a new chrome window. Without the options at the end it will only open a new tab
menubar must no, or 0, for Google Chrome to open in new window instead of tab.
The location=1
part should enable an editable location bar.
As a side note, you can drop the language="javascript"
attribute from your script as it is now deprecated.
update:
Setting the statusbar=1
to the correct parameter status=1
works for me
This worked for me:
newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");
Don't put a name for target window when you use window.open("","NAME",....)
If you do it you can only open it once. Use _blank, etc instead of.
I have the same problem, Chrome doesn`t open a new window from code (not handlers).
I found this solution:
setTimeout(function () {
window.open(
url, 'name', 'toolbar=1, scrollbars=1, location=1,
statusbar=0, menubar=1, resizable=1, width=800, height=600'
);
}, 1);
I believe currently there is no javascript way to force chrome to open as a new window in tab mode. A ticket has been submitted as in here Pop-ups to show as tab by default. But the user can click the chrome icon on the top left corner and select "Show as tab", the address bar then becomes editable.
A similar question asked in javascript open in a new window not tab.
As far as I can tell, chrome doesn't work properly if you are referencing localhost (say, you're developing a site locally)
This works:
var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
function openRequestedPopup() {
windowObjectReference = window.open("http://www.cnn.com/", "CNN_WindowName", strWindowFeatures);
}
This does not work
var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
function openRequestedPopup() {
windowObjectReference = window.open("http://localhost/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}
This also does not work, when loaded from http://localhost/webappFolder/Landing.do
var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
function openRequestedPopup() {
windowObjectReference = window.open("/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures);
}
Source: Stackoverflow.com