I have an application that opens a new window on clicking a link. This spawns a page that holds a Java applet. The problem I am having is that clicking the same link reloads the page, which resets the Java application. Is there any way to trap this? Two solutions that would be acceptable are:
Apologies for being a Javascript newbie - it's not really my main thing.
The code attached to the handler is
function launchApplication(l_url, l_windowName) { var l_width = screen.availWidth; var l_height = screen.availHeight; var l_params = 'status=1' + ',resizable=1' + ',scrollbars=1' + ',width=' + l_width + ',height=' + l_height + ',left=0' + ',top=0'; winRef = window.open(l_url, l_windowName, l_params); winRef.moveTo(0,0); winRef.resizeTo(l_width, l_height); }
EDIT:
Thanks for the replies - I modified the suggestions slightly so that I could have more than one URL opened via the function.
EDIT2: There is another version of this code at Check for a URL open on another window
var g_urlarray = []; Array.prototype.has = function(value) { var i; for (var i in this) { if (i === value) { return true; } } return false; }; function launchApplication(l_url, l_windowName) { var l_width = screen.availWidth; var l_height = screen.availHeight; var winRef; var l_params = 'status=1' + ',resizable=1' + ',scrollbars=1' + ',width=' + l_width + ',height=' + l_height + ',left=0' + ',top=0'; if (g_urlarray.has(l_url)) { winRef = g_urlarray[l_url]; } alert(winRef); if (winRef == null || winRef.closed) { winRef = window.open(l_url, l_windowName, l_params); winRef.moveTo(0,0); winRef.resizeTo(l_width, l_height); g_urlarray[l_url] = winRef; } }
How to check if an opened browser window is closed or not in JavaScript? To check if an opened browser window is closed, you can use the closed property in referenced window object in JavaScript. The property returns a boolean true if the window is closed and false if the window is in the opened state.
Is there ever a case when the window. document object is null or undefined? Yes, for JavaScript code that isn't in a document (e.g. node. js).
JavaScript provides an in-built function named close() to close the browser window that is opened by using window. open() method.
Its also a matter of fact the window. open creates a new window that shares session cookies.
I'd do it like this - basically store all the referenced opened windows on the function itself. When the function fires, check if the window doesn't exist or has been close - of so, launch the popup. Otherwise, focus on the existing popup window for that request.
function launchApplication(l_url, l_windowName) { if ( typeof launchApplication.winRefs == 'undefined' ) { launchApplication.winRefs = {}; } if ( typeof launchApplication.winRefs[l_windowName] == 'undefined' || launchApplication.winRefs[l_windowName].closed ) { var l_width = screen.availWidth; var l_height = screen.availHeight; var l_params = 'status=1' + ',resizable=1' + ',scrollbars=1' + ',width=' + l_width + ',height=' + l_height + ',left=0' + ',top=0'; launchApplication.winRefs[l_windowName] = window.open(l_url, l_windowName, l_params); launchApplication.winRefs[l_windowName].moveTo(0,0); launchApplication.winRefs[l_windowName].resizeTo(l_width, l_height); } else { launchApplication.winRefs[l_windowName].focus() } }
You need to perform 2 tests... 1 check if the popup window is defined, and 2 check if it was closed.
if(typeof(winRef) == 'undefined' || winRef.closed){ //create new winRef = window.open(....); } else { //it exists, load new content (if necs.) winRef.location.href = 'your new url'; //give it focus (in case it got burried) winRef.focus(); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With