Determine Which Control In Window.onbeforeunload In Javascript Caused Event
Mar 7, 2011
I have set up in javascript:
var onBeforeUnloadFired = false;
window.onbeforeunload = function (sender, args)
{
if(window.event){
if(!onBeforeUnloadFired) {
onBeforeUnloadFired = true;
window.event.returnValue = 'You will lose any unsaved changes!'; //IE
}
}
else {
return 'You will lose any unsaved changes!'; //FX
}
windows.setTimeout("ResetOnBeforeUnloadFired()", 1000);
}
function ResetOnBeforeUnloadFired() {
//Need this variable to prevent IE firing twice.
onBeforeUnloadFired = false;
}
I'm trying to achieve an edit screen where the user is warned before navigating away. It works fine except I get the pop up for normal post backs of button clicks. I'm hoping to avoid this so I'm figuring if I could determine which button was pressed it would work. Does anybody know how to determine which button was pressed in the indows.onbeforeunload? Alternatively anyone know a better approach to what I'm trying to achieve?
On my parent page I added a script which ask confirmation befor page unload (On every button press) using window.onbeforeunload, The problem i use to open a subPage on this parent page, and on closing of the subpage i use to reload the parent page, but it ask confirmation and I dnt want that....
i am currently developing an asp.net project. there is a previous, next, and cancel button that the user can utilize, but the problem is that everything is broken into controls so that if they hit the browser's back button it will reset everything and take them to the very beginning. i would like to capture the onbeforeunload event and trigger the previous button click event (i.e. treating navigation like clicking the previous button).
I am using jquery onbeforeunload event in asp.net application. If i write event as given below then its working fine and display confirm dialog box.
var vGlobal = true; var sMessage = "Leaving the page will lost in unsaved data!"; [ Working ] > window.onbeforeunload = function() { > if (vGlobal == false) return > sMessage; }
but its not working if i use bind method like as given below
[ Not working ] $(window).bind("beforeunload", function(e) { if (vGlobal == false) return sMessage; });
Is there any difference between these two methods.
Code on aspx:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox> CLICK ON THIS LINK TO SEE RUNNING EXAMPLE
What I want to do: dispose of a session upon detecting an "OnBeforeUnload" event in the client. I know it doesn't fire 100% of times (90% accuracy works fine for me)
Here I saw how to do it with ajax, this system, however, breaks down with ajax: I can't use it at all.
I'm building several user controls (ASCX) for my website and several of them are very similar in what they do. (As a side note, I must create unique UC's even if they're similar because I'm creating widgets for the new Telligent Community themeing system). For example, two of them are different but use the same front-end code to create a 2 or 3 tab panel where you can click a tab and it changes the data below. I have a single JS file to handle these tabs and the animations. I'm currently dynamically adding my JS file reference to the <head> from the user controls' code via:
If I have both of these controls on a page though, both will add this JS file reference. How can I do a check to see if it is already added from another control?
function validateComment(source, args) { var reComment = new RegExp("^[a-zA-Z0-9',!;?@#%*.s]{1,1000}$"); var validComment = reComment.test(window.event.srcElement.value); if (!validComment) alert("The comment has illegal characters"); args.IsValid = validComment; }
Upon clicking the button that triggers the validator, the application breaks and I can see that the window.event property is null, so obviously there's a null reference trying to match the regEx. My question is why could the window.event be showing up as null? I could've sworn this was working before.
EDIT:
I have modified the function as such:
var check = document.getElementById(source.id); var checky = check.attributes["controltovalidate"].value; var checkyo = document.getElementById(checky); var validHour = reOutHour.test(checkyo.value); if (!validHour) alert("The time is incorrectly formatted"); args.IsValid = validHour;
Now this is working on Internet Explorer, but not on Firefox...
We have a function that changes the iframe height at the window.onload event so we can adjust it to the page contents. The problem is that after clicking in an asp:menu the height its restored to its default and the window.onload event doesnt fire...so we need the event that would fire in subsequent loads (tried window.unload but didnt trigger)
The resize function cant be called on the asp:menu click because the window wouldnt have finished loading so the height calculation would fail...
Elsewhere in the page, some JavaScript opens a popup. When the popup is filled out and submitted, I want to use JavaScript to fire that OnSelectedIndexChanged event in the opener page. I found some other code that does something similar:
if (window.opener != null ) { var cf = window.opener.document.forms['aspnetForm']; if (!cf) { cf = window.opener.document.aspnetForm; [code]...
Is there a way to determine which control on a page caused a post back? I need to be able to make the determination since the _DataBound event of a FormView that I'm working with needs function differently based on which control caused the postback.
I have a user control which opens a new window for some item selection. Once an item is selected on that window, the item ID should be passed to a callback javascript function in the user control. In order to have a unique callback function name in the user control (it may have multiple instances on the same page), I added the user control ID to the function name as follows (defined in the ascx file):
function OnItemSelection_<%=this.ID%>(selectedItemID) { OnItemSelection("<%=SomeControl.ClientID%>", selectedItemID) } Where OnItemSelection is defined in an external js file: function OnItemSelection(controlID, selectedItemID) { $(controlID).do_something(selectedItemID); } The issue is that now I'm not sure how the new page can call the "right" function (of the user control instance where it was opened from). The only idea I have in mind so far is passing the name of the callback function in the query string: var CallbackFunction = function(selectedItemID) { window.opener.<%=Request.QueryString["CallbackFunctionName"]%>(selectedItemID); } or maybe just the opening user control ID: var CallbackFunction = function(selectedItemID) { window.opener.OnItemSelection_<%=Request.QueryString["UserControlID"]%>(selectedItemID); }
My questions are:
1) Is it a bad practice passing javascript function names (or user control IDs) like that (I suspect it is)?
2) What could be better way to handle this scenario? Edit: Another way I'm considering now is declaring a global variable in the user control (registering it from the code behind so it'll appear only once). Then, when opening the new window, it's possible to assign the relevant function to it (OnItemSelection_<%=this.ID%>), and call it from the new window. Seems much cleaner than passing user control data through the query string.
In web application, i tried scrolling the window vertically by increasing a y axis height to 500 with a javascript that is attached to OnClientClick event of a asp.net button control with id Button1. The script i have used is
<script language="JavaScript"> function scrollToWindow() { window.scrollTo(0,500); } </script>
and the button code is as follows
<asp:Button ID="Button1" runat="server" Text="Scroll to bottom" OnClientClick="scrollToWindow()" />
If i run this page and click that button, the page scroll is not working properly. when i put alert inside that script and debug, i found that the page is actually scrolling to 0,500 but again its rendering to its normal position because of some reasons. Overcome this issue and let me know the reason behind that?
I need to be able to flag ANY PartyId input field with class="PartyLookup" so that it will modify the DOM and include the image next to the input field. The popup window returns data to populate both the hidden and text fields, but since the click() is generic I need to pass it the ID of the input field.
I've got a Jquery function that I wrote which blacks out the screen after a certain amount of inactivity, creates a pop-up that allows the user to click a button to stay logged in, and logs them out (closing the application window) if they do not respond in time.
The environment is ASP.NET (VB). We don't technically use master pages, but we do have a parent page in which our header, footer and nav reside, and my Jquery code is called from that window, loaded via an IFrame.My problem is that if one is working in a child window, the parent window doesn't recognize that the system is in use, and will automatically engage at the allocated time.I've tried everything under the sun I can think of and nothing works properly. My event handler is working, and it does call the parent window function, but the timer is not being reset.
I have this function in the parent window:
<script language="javascript" type="text/javascript"> function window.reportChildActivity() { SESSION_ALIVE = true; [code]....
we are running a click-to-call service, my idea is basically like this: website have a link on their page, when the link is clicked, a web page(say it is popup.aspx) hosted on our server is popup, user can input their phone number, and click "call me" button to let the website call him. In the button click event, I want to get Request.UrlReferrer, then query the db to get website's phone. But in IE, Request.UrlReferrer is null(firefox is ok, not test chrome yet),my question is how to get opening window' url in IE? we put popup.aspx on our server because
our client website is not force to use asp.net. we have the control what we put on the popup window, and can modify the page just from our side, if we put the pop window on our partner's side, if we have 100 partner, and we change the page's design, we will notify everyone of them to change this, change that. we can implement a statics system to know how popup a day, which site is most popular,etc
I am using the javascript to open a child window using window.showModaldialog(), i have retuen a value from the child page is working fine in IE and firefox but is not working in chrome browser, is there any work around or alternative for it to work in chrome as well.
I'm looking to create a custom date picker with code examples from several sources.Is the code to display/hide an ASP.NET control when a user clicks a button usually done with JavaScript or ASP.NET code? By display/hide, I mean within the page not a popup window.