How to prevent closing a dialog created by showModalDialog()? - javascript

In normal cases, it is possible to handle the unbeforeunload event to present a message to the user which gives him the final choice wheter to close or not, as shown here:
<script>
function closeIt() {
return "Any string value here forces a dialog box to appear before closing the window.";
}
window.onbeforeunload = closeIt;
</script>
But this seems not to work in markup that is shown by window.showModalDialog.
Update: That means if this script is used in the HTML-Code which is displayed by the dialog to prevent the dialog beeing closed accidentially.
No message appears and the window closes if the "X" is clicked.
I managed to show a dialog using the <body onunload="return confirm('Really?')" thing, but in either way the window closes.
I was testing on Internet Explorer 9.
Any ideas?

Related

MSIE11, popup window using window.close() erases a variable just set

SUMMARY:
In MSIE 11, in a popup window when I fill a certain field with data it stays filled, or not, depending on if the popup window has window.close() called on it. Can't repeat with other browsers.
DETAILS:
I have a popup web page (a JSP page, if it matters to someone) I use to fill existing fields in a web form. I added a new field and it is filling OK -- sometimes.
Here is the pertinent section of the page, cleaned up for presentation. My actual page doesn't hard-code emails in the Javascript object.
function fillForm() {
var parentWindowOrder = window.opener.salesOrder;
var formData = parentWindowOrder.workingData;
[snip]
var xferEmails = {"emails":["jerome#myserver.com","jerome2#otherserver.com"]};
formData.user_emails = xferEmails.emails;
[snip]
}
window.close(); // HERE IS THE TOGGLE OF MY PROBLEM
In MSIE, if window.close() is disabled (commented out) then everything works OK. Elsewhere in the page the formData.user_emails can be referenced OK. Of course, the popup page still exists and must be manually closed. When using the console the query yields:
>formData.user_emails
["jerome#myserver.com","jerome2#otherserver.com"]
In MSIE, if window.close() is executed in the popup then the popup closes, of course. However, the values stored aren't preserved. When in the popup window itself, either before or after calling window.close(), the field is set and stays set. But after that the values are gone:
>formData.user_emails
{}
In other browsers I get the success condition.
Normally you'd say "You're changing the value elsewhere in your code"; however, I've already swept through my code looking for other references. Here, shown above, is the only place it gets set in my scenario.
In my practice other fills of variables through JSON-like syntax (xferEmails) works OK, even in MSIE. Not this particular one. What with window.close() could influence this?
Thanks for replies,
Jerome.
formData is initialized in the popup opened and within the scope of fillForm function. This is assigned to salesOrder variable of parent window. Did you re-initialize formData with salesOrder in parent window? If you didn't then it should be accessible via salesOrder.

Can i Call Window.open from confirm dialog Box?

Can I call window.open from confirm dialog box using javascript?
My Requirement:
In case browser pop up blocker was enabled means ,i want to open pop up window using window.open(); but it was not happening so that i have to show the confirmation message which is "Browser popup blocker was enabled, now pop up has been open". now i click 'OK', on that time i want to call window.open() function.
<html>
<body onload="openPopup();">
<head>
onload Popup Window
</head>
</body>
<script>
function openPopup () {
var href= 'http://google.com';
popUp = window.open(href, "_blank");
if (popUp === null || typeof popUp === 'undefined') {
var ret = confirm("this alert is displayed by Blocker, Continue to Open ?");
if(ret){
window.open(href,"_new");
}
} else {
popUp.focus();
}
}
</script>
Is it possible or is there any other way to handle this scenario?
No.
Pop-ups are generally only allowed following a user's click, and as you've already seen in your code onload usually won't allow it.
However, you could use your own UI, to create a custom confirmation box that the user can click on to open the pop-up. This will work, unless the browser's pop-up blocker is overzealous enough to block even click-to-open popups without prior confirmation within the browser itself.

Javascript mailto using window open

I currently have a form set up with 5 radio options. I have a switch statement depending on the option you pick and that determines where the email is going to go.
Inside my switch, I have this piece of code.
window.open("mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody);
It all works fine when it opens up my email client with all of the content however it also opens a blank page in the browser.
Is there another way to achieve this or prevent a blank window from opening but still make it as if you clicked on the href:mailto ?
Instead of:
window.open("mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody);
You can try:
location.href = "mailto:"+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody;
The second argument in window.open is the target.
window.open('mailto:'+emailTo+'?cc='+emailCC+'&subject='+emailSub+'&body='+emailBody, '_self'); should do the trick.
Location.href doesn't seem to work in chrome.
I do it like this:
x=window.open("mailstring");
x.close();
Works perfect for me.
After your "window.open" statement, try running an "if statement" to check and see if a new window was opened so that it will close.
if (win && win.open && !win.closed)
{
win.close();
}
This will happen very fast so the users might notice that a window opened and closed before the email application opened.

How can I detect the browser window being closed via Alt+F4 or clicking the window's close button?

I want to close a session in my application when user closes a window by pressing the close button in the title bar or using the Alt + 4 keyboard combo.
I am able to handle X using the code below, but this is not handling Alt + F4. I also tried onbeforeunload but this is not calling the function at all. I am testing with IE9.
<body onunload = "closingWindow()">
<script>
function closingWindow(){
if((window.event.clientX<0) || window.event.clientY<0)){
//Ajax call to close session
}
}
</script>
Check out window.onbeforeunload
https://developer.mozilla.org/en/DOM/window.onbeforeunload
Live Demo
window.onbeforeunload= function(){
// Ajax call to close session
}
Hit alt+f4 in the demo and you will notice the alert before it closes as well.

how do i close firefox browsers window using javascript?

function CloseWindow()
{
window.close();
}
The above code is working fine for IE but Firefox does not allows to close browsers window
any solution???
Try to use self object
Close Window
similar post answer
function closeWindow() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
alert("This will close the window");
window.open('','_self');
window.close();
}
closeWindow();
reason
For security reasons, your script cannot close a window/tab that it did not open.
The solution is to present the age prompt at an earlier point in the navigation history. Then, you can choose to allow them to enter your site or not based on their input.
Instead of closing the page that presents the prompt, you can simply say, "Sorry", or perhaps redirect the user to their homepage.
Step 1 : Type the in address bar as " about:config " and press enter key
Step 2: "i'll be careful , I promise" Click on this button
Step 3: " dom.allow_scripts_to_close_windows;true " Search this line and Double click on it.

Categories