Closed Bug 46845 Opened 25 years ago Closed 20 years ago

Form elements don't reset upon manually reloading page

Categories

(Core :: DOM: Navigation, defect, P1)

defect

Tracking

()

VERIFIED INVALID
Future

People

(Reporter: bugzilla, Assigned: radha)

References

(Blocks 2 open bugs, )

Details

(6 keywords, Whiteboard: relnote-user)

Build ID: 2000072808 WinNT4 M18 Steps to Reproduce: (1) Go to any page with a textbox or a textarea (e.g. the URL given) (2) Type in the textfield. (3) Reload the page. Result: The text doesn't clear from the textfield...this means that the user has no real way to clear any information he/she has entered except by manually erasing it.
prob a dup, can't find
Keywords: correctness, nsbeta3
nav triage team: although not in parity with 4.x, not good enough to warrant an nsbeta3+
Whiteboard: [nsbeta3-]
Need to change nsDocShell::embed() so that Layouthistorystate is restored only when the reload is "loadNormalReload". If it is anything else like ReloadBypassCache OR RelaodBypassCacheAndProxy, then we should not restore form values.
Status: NEW → ASSIGNED
Target Milestone: --- → M19
Target Milestone: M19 → M18
*** Bug 51079 has been marked as a duplicate of this bug. ***
transferring dogfood+ status from bug 51079 (methinks we need to be a bit more consistent in our plussing/minusing...this gets nsbeta3- but its dup got dogfood+?)
Keywords: dogfood
Whiteboard: [nsbeta3-] → [nsbeta3-] [dogfood+]
dogfood is a bit of a wildcard sometimes. It helps to have an exact case to compare the effects.
Priority: P3 → P1
I'm a little confused as how this should behave. In 4.x, if you go to the main bugzilla page and enter a bug # and press reload, the bug # is still there, shift-relaod clears the bug #. However, in the bugzila query page, enter values in couple of text fields to query for a bug, press reload, the text fields clear. The only difference I could think off between these 2 pages is that, the first one uses "GET", where as the extensive query page uses "POST". In mozilla, I'm planning on clearing the text fields for reload as well as shift-reload. Anybody have problems with that?
Hmm..that's a good question. I really don't know. Matthew/Claudius: any idea?
I just checked and IE 5 retains form values when pressing reload or shift+reload (unless you do it over and over again really fast, then after five or so times, presto, your form values disappear). Also, both Nav and IE retain the scroll position when pressing reload. Nav does this even when clearing out form values with shift+reload. If we decide to do this, could add a boolean flag to presShell::SetHistoryState() like aOnlyRestoreScroll that would be only true for shift+reload or something like that... I'm not sure that, given Nav and IE's behaviour, a user or a web designer would expect the forms to be cleared out when a user presses reload. A web designer always has the option of adding a <INPUT TYPE=RESET> or calling form.reset() through javascript if they want the form to reset...
This is not the behavior I see at all in win32 IE5.5. Note, however, that by this bug I mean that only changes the user makes to textboxes should be cleared on reload. For example, if the default text value of a textbox is "hello" and the user types " bob" after it, the textbox should refer back to "hello" if the user reloads -- just as if you had pressed a reset button.
Eric, how tough is adding that parameter to PResShell::SetHistoryState()? To answer blake ross's question, if the text field had a default value, it will get set again when we reload the page. I don't believe, SetHistoryState() meddles with default values set by the page.
Eric, I agree with your email comments. I'm actually OK with retaining values upon reload and clearing values upon shift-reload. I was quite puzzled to see Nav clear form fields on reload.
Blake, Johnny Stenback and I just tested this out because we saw something different than you. In IE 5.0 and IE 5.5, the behaviour is to retain form values if the reload comes from the cache (e.g. http://bugzilla.mozilla.org, type a bug number and hit reload) but NOT retain the form values if the reload hits the server (e.g. hotmail, while composing a lengthy email, accidentally hit reload and your message is blanked). I tend to think that there is more of a chance that a user will be mad to see their half-hour of work destroyed in one accidental mouse click than having to manually select the field to retype it. If we do make the blanking-on-reload behaviour available, it should probably be through a pref that defaults to off. Also note, that web designers can (and have always been able to) add <INPUT TYPE=RESET> to a page to add a button that resets a form in a single click.
> Eric, how tough is adding that parameter to PresShell::SetHistoryState()? If we did decide to emulate Nav's behaviour, it shouldn't be too bad... We would have to change all callsites (3?), add the param to PresShell::SetHistoryState and nsWebShell::SetHistoryState. We would probably use the param in PresShell::ContentAppended to *not* call mFrameManager->RestoreFrameState, but probably just always continue to restore the scrollbar state in PresShell::EndLoad
I don't think this is primarily about web developers. I think it's about what users want from their browser. I think the best path here is to leave the values on a reload, but clear them on shift-reload. IMHO, the IE behavior is also a bug. The cache shouldn't really have anything to do with this from a user's point of view since then it would just look random. Requiring the shift with the reload covers the "accidental" loss of data argument.
Do we all agree that reload maintains form values, shift-reload clears. I like it. Eric, if you are busy, I can take care of adding the new parameter to nsPresShell::SetHistoryState(). Changes to docshell will be minimal too.
If I select Reload, I expect a fresh copy of the document -- one where the contents of form elements, just like the contents of the rest of the page, are as the author/server specified them, and not as I specified them. To leave values I entered in the form on a reload makes no sense -- especially since some or all of the form elements may change, may take on different meanings, or may no longer exist, when the document is reloaded. See also Jakob Nielsen, who suggests that `Reset' buttons should not be included on Web forms <http://www.useit.com/alertbox/20000416.html> (and I agree). This would leave the `Reload' function as the way of clearing the contents of a form, if you really wanted to do so. He also says: `A classic design mistake on the Web is to have radio buttons that initially do not have a selection. Often, there is no way for the user to select a "nothing" option, once he or she has selected one of the choices.' There is one way: the Reload button ... as long as this bug is fixed, of course.
Keywords: 4xp
Matthew, what about the "data loss" argument?
If I change a whole lot of prefs in the prefs dialog, and then I click `Cancel', I lose all those changes. That's what `Cancel' is for. It's data loss, but it's *supposed* to be data loss. We don't have a warning dialog popping up saying `Are you sure you want to exit prefs?', because we trust the user to know what they're doing. Similarly, when I fill out stuff in a Web form (which is just a glorified dialog, really), and then I click `Reload', I *expect* all my changes to be cleared. If that doesn't work, many users will see no method of clearing the form short of restarting the browser -- or using a different browser.
Fix checked in.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
just so everyone is clear, this has been implemented such that 'Reload' just fetches the page, maintaing the form fields' status. 'Shift'+'Reload' clears the form fields. I have verified this behavior with the 2000091908 builds, marking VERIFIED Fixed.
Status: RESOLVED → VERIFIED
Shouldn't that be verified wontfix, then?
Reopening. I think this is an absolutely terrible way to fix this bug. First of all, why should users need to have the navigation toolbar open all the time? Shift+Ctrl+R, Shift+F5, Shift+View>Reload, and Shift+Context Menu>Reload all just reload from the cache and ignore the shift modifier. This means that anyone that wants this behavior needs to have the navigation toolbar open/uncollapsed, and needs to use it. Second, when people are using the mouse to surf, who wants to switch to the keyboard and hold down a modifier just to get the standard behavior to happen? Non-standard behavior should be triggered by hidden modifier shortcuts; the user should not have to work to get the behavior he expects, it should just happen by default. Third, seeing as how it seems to be an easy fix just to fix it the `right' way, why are we going out of the way just to change the typical behavior of the Reload button? The Reload button has functioned this way for as long as I can remember. If users have been accustomed to it for years, and there doesn't seem to have been many complaints, why should we change it? Fourth, the data loss argument is a silly one. There are times when the user wants to voluntarily lose data; we should not be overeager in protecting him or her from such cases. If a user is typing in a form, they are not likely to accidentally going to click Reload. Again, if Reload has worked like this forever, where are the complaints from users that suggest we should change this? Let's fix this the right way. If users start complaining, we can change it. After all, things should really only change from the standard if user input suggests that they should.
Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Summary: Contents of textboxes/textareas don't clear upon reloading page → Form elements don't reset upon reloading page
By the way, this applies to all form elements -- not just textfields. Also, this used to work, but regressed.
Keywords: regression
Add to all the points above, two further problems. Firstly, Shift+{click-Reload-button} is not documented anywhere. Secondly, it's not accessible for people who can only use the keyboard -- and even if Shift+Ctrl+R was implemented, that would be hard for people who have difficulty pressing more than two keys at once.
Keywords: access
These are good things to debate for future fixes. Changing this again won't get approved right now. Removing dogfood+ because this bug is now complaining about the fix rather than the original problem.
Whiteboard: [nsbeta3-] [dogfood+] → [nsbeta3-]
I agree that this shouldn't be dogfood+, and never should have been. But this bug is still complaining about the original problem, because the original problem was to reset form elements upon pressing reload -- and that still doesn't happen. You can fix a bug a thousand different ways, but not all of them are right... (-Blake 9/2000) There's no need for this to be futured off. I can make the change and check it in without it having to be a P1/pdt+ bug. So, let's make a decision and I'll do it.
Keywords: dogfood
Removing nsbeta3- to trigger a decision, since we have a volunteer. (Attaboy, Blake ...)
Whiteboard: [nsbeta3-]
Restoring "nsbeta3-". I agree with Radha and others that we should not, by default, clear form data on reload. I realize that the shift-reload solution to override this may not be optimal. However, sometime after sufficient user feedback, we can add an explicit command or even a visible preference, if necessary, to do this. I'm adding the "relnote3" keyword to this bug so Vera can mention the changed behavior in the release notes.
Keywords: relnote3
Whiteboard: [nsbeta3-]
Radha asked for some comments from PDT... so I thought I'd add my comments: I just tried this on Nav 4.7. What I saw (my test page was bugzilla.mozilla.org) was that reload maintained the data entered, and shift reload reset the fields. As a result, this seems to be exactly the same as Claudius verified the performance on 9/19 I also verified that IF you get focus on the URL bar, and pressed enter, that you would get a "fresh copy" of the page with all fields cleared (reset). This sounds like yet another way to reset the fields. IMO, this bug is in great shape, and no further work should take place for Nav 6 at this point.
Based on comments from PDT, futuring it.
Target Milestone: M18 → Future
As of 2000101021, form elements which have no default values are left as is, but elements which have default values are reset to their default values. Regardless of what the correct way to handle this situation is, it should not matter whether the original page had a default value for an element or not. For example, if you go to the Bugzilla helper at: http://www.mozilla.org/quality/help/bugzilla-helper.html and fill out the form, then hit reload, most of your entries will be preserved, but "Steps to Reproduce" will be reset to "1.2.3."
BTW, just to butt in on the previous discussion, on what to do if a user has modified fields in a form and hits Reload, maybe the best thing to do is just pop up a dialog and ask what they want. Since they make expect the form to be saved because of IE's behavior, and since CTRL-R is relatively easy to hit (especially if you use CTRL-E for end-of-line), it's not a good idea to destroy their data if that's not what they want. Since it's not obvious or straightforward how to clear the data if there isn't a reset button on the form, it's not a good idea to make this impossible, either. If we just check if any fields have been changed from default, and if so, display a dialog asking whether to reset the form (defaulting to No), then the user can pick what they want. If this is irritating to some folks, it could probably be saved in prefs.js if they wanted it to be (ie, a little checkbox that says "Always do this when reloading a modified form"). Just my 2 cents. :)
for the record, on 4.7x on Macintosh if I click the reload button (no modifiers), I see my form fields getting cleared.
Keywords: nsbeta3relnoteRTM
OS: Windows NT → All
Hardware: PC → All
Whiteboard: [nsbeta3-]
relnote3 was nominated because the behaviour changed from PR2 to PR3. Is this a useful thing to relnote for RTM? The blurb: It seems unclear to me whether this bug requires either of a "developer" or "user" release note for Netscape 6 RTM. If anyone feels it does, can they please draft one and then nominate with the relnote-user or relnote-devel strings in the Status Whiteboard. Thanks :-) Gerv
Relnote-user: Unlike previous versions of Netscape Navigator, if you reload a page containing a form, information you entered in the form will not be cleared. To return the form to its original state: * if the Navigation Toolbar is not visible, display it by choosing View > Toolbars > Navigation Toolbar; * click in the location field, and press Enter. [The following is necessary if there is no way to give the location field focus via the keyboard (in an existing window) by RTM.] If a disability prevents you either from using the toolbar or using the keyboard, so that you cannot carry out the above steps, use these steps instead: * add a bookmark for the current page (Bookmarks > Add This Page); * open the Bookmarks window (Bookmarks > Manage Bookmarks); * visit the bookmark (by double-clicking on it, or pressing Enter); * once the page has loaded, return to the Bookmarks window and delete the bookmark.
Whiteboard: relnote-user
Sorry, `either from using the toolbar or using the keyboard' --> `either from using the toolbar or from using the keyboard'.
> visit the bookmark (by double-clicking on it, or pressing Enter); No, this doesn't work either. Great accessibility, eh? Can't they just use Open Web Location? Anyways, nominating for 1.0. The only two workarounds for this problem, as presented in this bug, are shift+reload and pressing enter in the URL bar again after the page has load. Aside from the fact that these are both very obscure methods that probably aren't documented anywhere, both of these require you to have the Navigation toolbar open, which is, of course, not an acceptable solution.
Keywords: relnote3mozilla1.0
This seems to be working correctly now: reloading is resetting forms, but navigating (back/forward) isn't.
... and "apply theme" isn't resetting forms, which is also good.
nav triage team: as per comments, this is now fixed! please verify.
Status: REOPENED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
*** Bug 83445 has been marked as a duplicate of this bug. ***
Reopening because the reported behaviour is still here, but in bug 83445 it is suggested that this bug should become a "feature" and documented. Mark this wontfix if you agree.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Keywords: mozilla0.9.2
This can cause dataloss: if I make bug A depend on bug B and then reload bug B, I will see a link to bug A but the bug number for bug A won't be in the depends-on text box. If I then make changes to bug B and submit them, the dependency will be removed.
Keywords: dataloss
*** Bug 89092 has been marked as a duplicate of this bug. ***
I would like to chime in on this debate. Conceptually, "Reload" means to fetch the page again, be it from cache or web. The page you're fetching already *has* values for the form elements; the defaults. It makes little sense to re-fetch a web page and end up with a version of that page that DOES NOT reflect the source of that page. However, if the loss of data argument simply cannot be dropped, then I can live with a dialog asking for how to handle a reload in the case of altered form fields (complete with "always handle this way" option and the ability to change this in the main preferences dialog somewhere)
I'd found form data isn't cleared after submitting. http://www.mozilla.gr.jp/~kazhik/testcase/1175.cgi (1175.cgi) #!/usr/bin/perl use CGI; my $q = new CGI; my $url = $q->url; if ($q->param('submit')) { print "Location:$url\n\n"; exit; } print <<EOT; Content-Type: text/html <html> <head> <title>TEST</title> </head> <body> <form action="$url" method="get"> <input type="text" size="20"><br> <textarea rows=2 cols=20></textarea><br> <input type="submit" value="SUBMIT" name="submit"> </form> </body> </html> EOT Is this the same problem?
*** Bug 96167 has been marked as a duplicate of this bug. ***
*** Bug 96114 has been marked as a duplicate of this bug. ***
Hazuhiko, do you still see this bug when you submit on your testcase? I don't see it. I had noticed recently that checkboxes weren't resetting between submits on certain eBay.com pages. I no longer see that problem, either.
*** Bug 100126 has been marked as a duplicate of this bug. ***
*** Bug 60269 has been marked as a duplicate of this bug. ***
*** Bug 100126 has been marked as a duplicate of this bug. ***
What is even worse than not clearing the textfields is that - at least with textarea fields - a reload doesn't reflect changes in the html code. i wrote a little script which sets always the current time as the value of a textarea at http://www.antifa-aktion.de/mozillabug.php try to reload a few times and compare the source to the output.
my opinion: If I hit reload, I want a brand new page. What other conceivable reason would I have for that action? Why would I want my old form field values filled in? If I wanted them filled in, why would I hit reload? I ran into this bug while trying to write a test case for another bug. http://www.wickline.org/mozilla/2001120200/ I expected that I could re-set the test case by hitting reload. Nope. Why not save shift-reload for the special behavior of saving the form input values? It seems to me that wanting to save the values is the special form of reload. -matt
I want to add my comments since there seems to be some people who actually think the current Mozilla behavior in this regard is sane. It is NOT. I honestly have never ever seen IE or Netscape keeps form field values on refresh, and I have been using the web since it's inception. Perhaps my settings have always been set the same for all these years and I haven't seen it... However the current implementation does break dynamically created content. When a page is refreshed (ctrl-r / cache set to Every time...) the form fields stay the same, and yet all dynamic content (document.writes and so on) other than form fields is reset. This is inconsistent, and breaks dynamically generated content that is driven by the data in the form fields. If a test case is needed I'll be glad to provide one. The Mozilla fix for this "feature" is to run a script onload that resets all form fields. This brings me back to all of the little quirks in NS4 that developers have grown to despise over the years, and have driven the NS userbase almost to non-existance. The best way to implement this feature is to give the choice to the developer to turn it off or on with a parameter in the input tag. If you leave it on by default, it will still break current implementations, but it's better than throwing another Netscape quirk on us developers. Someone above said this isn't about developers. Well it isn't about users either. It's about both. Without developer support though, Mozilla/NS has no chance of regaining it's former status as the best browser around. Of course this should be obvious, but sometimes looking at comments on these bugs I wonder.
I firmly (maybe even violently) agree that reload/refresh should reload the original web page as sent by the server and *not* modify that. If the input says value="" then I expect an empty string to be the value when I hit reload. If the input says value="your name here" then I expect that value when I hit reload. Some folks want to get all paternal and try to protect users from using the reload/refresh button to reload/refresh the page when the user doesn't really *want* to reload/refresh the page. The solution is to educate the users (dammit!). May I suggest... user hits 'reload' mozilla checks to see if warn-on-reload is enabled if enabled mozilla checks to see if page contains form(s) (maybe just forms with non-hidden form widgets?) if form(s) found mozilla warns: "reload will clear all form values" [ ] check here to never show this warning again (_reload_page_anyways_) (_cancel_reload_) else forms not found mozilla just reloads else warn-on-reload has been disabled mozilla just reloads now user sees a reloaded page forms' values are what they want to see this gives a one-time annoyance to those of us who know what a reload button is for. It also educates users who don't know what a reload button is for. Please don't cripple the browser to serve the ignorant. -matt
*** Bug 116677 has been marked as a duplicate of this bug. ***
Since there has been no comment from Mozilla, does status whiteboard mean that this is not going to be fixed for 1.0 and the next major NS release that presumingly will be based on it? I just need to know because I need to fix all of my sites that change the DOM based on form values. Calling form.reset() is also not a valid workaround at all as someone mentioned, when some of the form fields have default values. The ONLY workaround to this feature is to manually reset the fields onload that need to be blank. Since I have some forms with 30+ fields I have my work cut out for me, or I decide not to support Mozilla in my apps. Mozilla please mark this wontfix or actually fix it please asap. Don't leave this floating as reopened as I for one have a lot of work to do if this behavior is final.
One comment. Lots of sites seem to feel that programmatically reloading the page (calling location.reload()) is a clever thing to do in response to, say, a resize event. This is a workaround for a Netscape4 bug with style sheets, but the sites do it for both Netscape and Mozilla. The obvious effect is that on such sites opening the sidebar will reload the page and (if this bug is fixed) clear all the form data. I'm not sure there is a good solution to this (crippling location.reload() is no good) and I'm not sure we even want to keep this in mind when fixing this bug (affected sites should probably be evangelized). But I've often run into this problem when using NS4 and I like not having to deal with it in Mozilla...
I agree with the argument that clicking "Refresh" implies that a fresh, unedited page will load. And I also agree with the argument that some instances of Refreshing, like a window-resize initiating a location.reload() command, should not wipe out the edited field values. So, why not add intelligence to the Refresh button, so that clicking it *twice* initiates a fresh copy? After all, if a user clicks it once and doesn't get the desired result, they'll probably try clicking it again. Also, isn't there an HTTP REFRESH command (or something) that can check for updated HTML, so that the form will reload fresh if it's been modified?
(sorry for the spam) And another thing: what happens to the field values if you've submitted a form, realize you need to fix something, and press the BACK button? Does Mozilla maintain the field values (as desired)? This, to me, is the likely source of dataloss. P.S. My interest in this stems from bug 55583 re cached sources.
> press the BACK button? Does Mozilla maintain the field values Yes, if the page was kept it the cache. If we rehit the server for the page, we don't keep the values (they too are stored in the cache).
Hello, [Tony Tovar on "refresh"] I disagree. So far I think that "refresh" (somehow not available in Mozilla 2001112012 but in Netscape4) would redraw the page from the browser cache if, for some reason, the display got mangled (ie, window-manager bug). "Reload", however, should reload the page from the server and make _no_ modifications. Boris Zbarsky writes that many sites call "location.reload()" on resize for both Netscape and Mozilla, but this is a bug in their JavaScript code anyway (imho). The "right way" to keep browser differences in check is not to dissect the version string as the main source of decision, but to test for objects pertaining to only the specific browser defects one wants to know about, if at all possible. So one would arrive to classify Mozilla as DOM compliant while Netscape4 would not be classified as DOM compliant, thus making a difference between the two browsers the version string may not show (for some simple-minded browser-detection schemes). Therefore he right thing to do is to evangelize site programmers and in the meantime have Mozilla reload the page from the server, imho. OTOH, stepping back and forth along the history should retain form values if possible (ie, if one steps back a few pages and then presses submit on that page, the former "forward" track of history is lost).
obviously, mozilla should do the Right Thing. In this case, I would argue that the Right Thing is for mozilla to support recomended practices rather than to encourage antiquated hacks evolved in response to buggy browser behavior. buggy browser behavior = NN4 css bug with page resize antiquted hack = page author abuses location.reload() Wrong Thing = perpetuate this page author behavior by adding another layer of hackery (and introducing additional problems as evidenced by the discussion and votes) Right Thing = let page author clear form data let users get annoyed at page's behavior let page author learn the appropriate behavior MHO, -matt
mozilla folks, should the reload menu idea discussed below be a new RFE, or does it fit well within this bug? ... toni, re: your email, my comments were not directed specifically at your comment #65, but rather generally at those comments above which argue that this bug should be wontfix'ed. regarding your distinction between reload and refresh, I don't think that there would be any general consensus as to which word meant what, and having both functions available would probably lead to more confusion that anything else. *if* there is to be more than one reload/refresh, then I would think a better UI might be to just use one of those two vocab words, and use one button, but have that button provide a menu (like the history menu dropping off the back button) of the possible ways of reloading... reload page from browser cache reload page from browser cache & restore form data reload page from server (re-submits POSTed form data) reload page from server (re-submits POSTed form data) & retsore form data The parenthetical bit about re-submiting POSTed form data would only show when appropriate. The ordering of items is such that the "least expensive" items are first, but maybe some UI folks would have a better way of doing it. In any event, the above are four different types of reload, and my opinion would be that if you pick four different words for the above actions (reload, refresh, rerender, redraw) then you will probably be hard-pressed to find a "best" mapping from the one list to the other. For less user confusion, perhaps the four actions could be made available in an explicit list. My preference would be that the default button click would do a reload page from server without any form data restoration... just restore the default values as specified in the page source. -matt (toni: MHO meant IMHO w/o the 'I')
Please report any new feature requests as separate RFE bugs.
comment #67 has been made into bug 118625 for those who are interested -matt
This is a bug I've "looked at from both sides now"... There are times when I've been glad that Mozilla preserves my form input despite reloads being forced by various sorts of annoying page coding, or when I have to reload a page because the server glitched somewhere in the course of loading it, but I've already started filling out a form on it... and I'm very worried that a "fix" of this "bug"/"feature" will result in more instances where just using the back and forward button, resizing a page, etc., will blank out form inputs. On the other hand, I've also sometimes been frustrated when a dynamically generated page that includes textareas and form fields refuses to reload completely from the server in any easy way when I want it to. This includes pages I'm developing, where I'm trying to test changes including changes to input defaults, and have trouble seeing my changes because my previous inputs stick around on reload. Thus, I'm two-faced on this bug and not sure which way I'd like Mozilla to go.
*** Bug 119262 has been marked as a duplicate of this bug. ***
*** Bug 126103 has been marked as a duplicate of this bug. ***
The "some pages coded for Netscape 4 call location.reload in onresize" argument is irrelevant, because <body onresize="window.location.reload()"> clears form values in both Netscape 4 and Internet Explorer 6. If a page with a form larger than a search box used that code, they would have already heard from their Netscape 4 visitors.
I've always used history.go(0) for the onresize event in Netscape 4 to get the page to refresh. Form field values are maintained. location.reload() wipes out the form field values. This was identified as a change in version 4.0.12 of Hiermenus, but has been fairly well known for quite a while. http://www.webreference.com/dhtml/column55/3.html Regardless of the JavaScript behavior, when the user clicks the reload button, the page should be reloaded and no form values should be stored.
*** Bug 127943 has been marked as a duplicate of this bug. ***
*** Bug 128303 has been marked as a duplicate of this bug. ***
*** Bug 123659 has been marked as a duplicate of this bug. ***
Blocks: 134987
Got a solution! Add autocomplete="off" in the input tag, and voila! Refreshing the page will reset the value.
That's mean autocomplete attribute should be "off" intead of "on" by default?
The fact that the autocomplete attr (which should control whether the form manager prefills those slots in the form) affects reload behavior sounds like a bug to me.
I don't think it is a bug. Although it might have been a side effect, it really is an almost optimal fix for this bug. I do think turning autocomplete off by default would be best, but I'm happy with this solution. In my little rant on this bug a while back, I said I felt the best way to implement the reload protection, would be with an attribute in the input tag...and here it is. When you think about it though, like you said, the whole reason for the autocomplete attribute is to give the developer the ability to turn autocomplete off. Mozilla recognizes that developers do need to have complete control over a form at certain times, and have provided a way to do it. The same reasoning follows here. So don't go and spoil my party, ok? ;) I hope we will be hearing from Mozilla on this soon though. Just some note for anyone interested, the autocomplete attribute property is not writeable using the setAttribute() or removeAttribute(). Also when setting autocomplete on, and typing in some text, then editing the document to turn autocomplete off, the text disappears. Interestingly enough, if you then turn it back on and reload, the text appears again. I don't think that it matters, but for curiosities sake...
hm, I think we should not remember element's value when reload. Because it makes confusing. But we should remember it when back or go to any history page. Just like NS4.x and IE's behavior.
Autocomplete off by default sounds good to me, or set in preferences. Maybe there are some other settings (I could think of, open Dom Inspector, open JS window), that would compile a "Developer Mode" vs. "User Mode", to make it into something more transparent for an end-user.
The purpose of the autocomplete attribute is NOT to enable/disable reload-preservation of form fields. It is to enable/disable autocomplete. If you change the default to autocomplete=off then autocompletion of form fields will be broken for all sites except the rare few that have been specificly designed with Mozilla in mind. At present, the workaround for this bug is to always press Shift+reload instead of just pressing reload by itself. I think the owners of this bug simply expect all Mozilla users to get used to doing this.
This bug is not only about the user interface, that's a minor issue. There is a very real dataloss problem here. Please read the previous comments. There is however a problem with the UI also. Most forms these days do not have a reset button since users have gotten used to just refreshing the page and it's too easy to hit a reset button accidentally. You cannot expect every single user to know to hit shift-reload or ctrl-shift-r to refresh a form. Windows users are too used to using their mouse only, and have come to expect it. How many Windows users do you know that actually use ctrl-c and ctrl-v? A mouse/keyboard combo is even more unintuitive for a newbie imho.
I'm not looking at this from an 'consumer/visitor' point of view, but from a webdeveloper point of view. I use keyboard shortcuts a lot, but ctrl-shift-r vs. ctrl-r makes quite a difference - plus - you don't _realize_ this is an issue! It took me two hours to figure out, it wasn't my code, but Mozilla that displayed the wrong results - can you imagine how **** you feel at such a moment? Would you take up developing with Mozilla again? And who are the primary users of Mozilla? Indeed - webdevelopers, because of the standards compliance. We are the ones, that have to educate the end-users, show them, that other products are inferior - but if we don't like working with it, what will happen, then? I mean - even the view-source suffers caching problems - luckily I rememberd this bug, and opened the page in Opera, to see if my hunch was right - and there you have it -> I have another product open, to check if what Mozilla is showing me is correct! Please don't take this the wrong way - it's meant as a constructive critism, from a person who would like to see the browser succeed, but fears these cacheing shortcuts may be it's downfall.
Can cause users to submit incorrect form data: Severity --> critical.
Severity: major → critical
*** Bug 142110 has been marked as a duplicate of this bug. ***
*** Bug 143081 has been marked as a duplicate of this bug. ***
Keywords: nsbeta1
*** Bug 149905 has been marked as a duplicate of this bug. ***
*** Bug 150414 has been marked as a duplicate of this bug. ***
*** Bug 150582 has been marked as a duplicate of this bug. ***
I have raised the issue here regarding the (non) resetting of a combo box on refreshing the page (I believe it should reset because the form specifies a selected attribute on one of the options and so this should be the default). It will reset using shift+refresh or by putting the cursor in the navigation/URL field and hitting return. Konqueror and IE 6 both reset back to the default form values on refresh. Also, the behavior that I am looking for - which is to set a couple of related combo boxes to default values is broken by this bug (and thus so is my feature :-( ). Whats worse is that intuitively, I believe that this should somehow be related to the ability to remember values entered into a form - but it isn't since altering this ability through preferences doesn't make any difference. my 2 cents.
Maybe set the defaults to match the others browsers defaults mode. I matched the problem when I used multiple inter dependent combos ( the first reload with the 2nd modified, the 2nd with the 3rd... ), and, huh, useless by default in mozilla :(, and we lost the 'ergonomy' of this feature if we have to ask the user to press shift refresh (note ctrl-shift-r does not work ;) ).
Regarding dataloss: this is not any worse dataloss than back/forward, and we can't get rid of that because users *want* it. Not only that, you guys can fix your pages! You can: - Put Cache-Control: no-store in the header to keep all save/restore from happening on the page. - Put autocomplete=off in the individual form controls to turn it off in the critical ones. The current behavior is good for *users*, even though it's not good for the 90% of people here who are serious web developers. What normal user *thinks* about abstractions of fresh pages and stuff? They are thinking of their Search field as a search field, not as an <input> tag in a webpage. They don't know that when they reload the page it's a completely different form and a completely different tag. They know they typed something in their field and when they reload if the data is still there, they will be completely accepting of it, and even thankful in the case of a long missive in a bulletin board. The thing is, with current behavior, the user has the *option* of deleting the data he entered when he hits Reload. If we fix this bug, the user cannot go back to the text he entered with any amount of effort. IMO, WONTFIX is the right option here.
Severity: critical → normal
I'd disagree. As far as I'm concerned, as a user and a web developer, when I hit 'Reload', I'm asking the server to send again what the page looks like in it's original, unchanged state, and the server does that. The data which is cached in the form controls is not coming from the server - it's coming from the client. It's not up to the client to decide what should/should not be cached. 'Reload' to me implies that you return to precisely the state that the page would be in if you were to visit it for the first time. Bug 134987 discusses the implications of this and the option to warn users that reloading will clear the form, which I think is the better option. Whilst the suggested workarounds will indeed work, I don't think it addresses the basic issue that the client is basically deciding what to display, regardless of what the remote server is telling it to display - this does not seem right to me.
Why would a user hit reload in the middle of composing a big webboard post? Because they want to reset the form to the way it was, i.e. they want the dataloss.
In Bugzilla I often meet 'mid-air collision'. So I go back (using Back button) and reload whole bug page to get new comments and changes. I'm VERY HAPPY, that my form data doesn't disappear while this action. Agree with WONTFIX. Form reset should be in context menu for forms.
I comment on this bug way to much, gotta keep the torch alive though. Anyway here goes.. Let me just say that, I'm not as concerned about this bug as I used to be because there is finally a way to work around it (undocumented anywhere by Mozilla or Netscape until you just said it to my knowledge, this was relnoted but didn't make it into the release notes..), but there are many developers who will not be aware of the workaround. Take the Mozillazine forums for instance. The title field keeps old topics that you typed in even though all you wanted Mozilla to remember was the username and password field. I think that is annoying, and definitely not good for your average user to have to keep having to delete that field for every post. So what does a user think when he sees the topic field always staying the same? I'll bet that they think that something is buggy with the site or the browser. Definitely not a good thing, and yes, I know how to use the form manager, but will most users? Now, Mozillazine is run by some of the people most intimately familiar to Mozilla and they either didn't have the time, or maybe don't even know about the simple autocomplete=off fix. So what makes anyone think that the other thousands of web developers are going to know it? Most certainly will not know how to turn off caching. So both workarounds are pretty much meaningless, because they wont be used, and autocomplete=off has a slightly different behavior in IE as well. The real issue in of bug now though (Mozilla's behavior here has changed multiple times since this bug was filed), which is that Mozilla _does_ reset hidden form fields when going backwards, forwards, and on refresh. However it leaves visible fields intact, which may have been used to calulate the value of the hidden field via javascript. Then when the user submits the page to the cgi script, data corruption occurs. This obviously is not the same type of situation that occurs when going backward and forward at all (IE6 will keep hidden and visible...sometimes). The same problem can occur on any page where javascript sets form fields, which is very common. Part of the problem is something which I don't totally understand. IE will keep both the values, sometimes, in some testing it seemed that whenever I changed the htm file to a cfm (cgi app server) file IE would stop caching, but Mozilla continued it's autocomplete behavior. Looking at the http headers, and I'm totally speculating that IE does not send the cache-control header when it sees a file it suspects may not be static html, but Mozilla continutes to do so. You can see this here http://24.73.19.182/automoz.cfm I'm not sure of the underlying mechanism behind IE doing this, but here is one place where IE does get it right and Mozilla is not imho. If Mozilla is going to keep the values, then it should keep them all, but I as a developer would prefer that the feature be turned off by default, for the reasons mentioned in the Mozillazine example. It solves both problems easily. One thing I can guarantee is that every single web developer in the world that trys to develop a form in Mozilla with any kind of javascript interaction is going to run into this problem, and they are going to be pretty upset after hours of debugging (and refreshing...) to learn that it was Mozilla's fault, I know I was. Heh...speaking of mid-air collisions, three people made comments while I was typing this beast of a comment. I clicked back, and my stuff was still there. Awesome! The other still issues need to be solved though, and they can be, as IE shows.
Shoot, I forgot. In order to see the difference in what IE sends versus Mozilla, on the link in my post, refresh the page once in each browser.
In some cases, because form elements are not reset, it is actually *impossible* for the user to return the elements to their original state. In the case of radio buttons, the original state may come up with no radio buttons in a group checked. However, once a radio button is checked it is impossible to return the group to a state where all buttons are unchecked. One will always remain checked. In other cases, may not be able to return the page to its original state simply because he does not remember which values he has changed. I think that these are two arguments in favor of resetting.
> Why would a user hit reload in the middle of composing a big webboard post? Why would a webpage call location.reload() in the middle of the user composing a big post? A number of pages do just that.... > Mozilla _does_ reset hidden form fields Bug 149962 (and fixed). Pages had better not be depending on radios not being preselected by the UA; see http://www.w3.org/TR/html401/interact/forms.html#radio
Comment 95: > - Put Cache-Control: no-store in the header to keep all save/restore from > happening on the page. And completely unnecessarily prevent caching? I think not. > - Put autocomplete=off in the individual form controls to turn it off in the > critical ones. autocomplete? Huh? What? Who? Where? That attribute doesn't exist: http://www.w3.org/TR/html401/interact/forms.html Comment 98: > In Bugzilla I often meet 'mid-air collision'. So I go back (using Back button) > and reload whole bug page to get new comments and changes. I'm VERY HAPPY, that > my form data doesn't disappear while this action. Think about it! You type a comment, you get a mid-air (perhaps because someone has changed the summary, url, keywords and status whiteboard fields), you go back, hit reload, the form elements does *not* reset, you hit submit, *thus overwriting the changes to the summary, url, keywords and status whiteboard fields*! Scenario: A page on some internal network contains a big <textarea> with some notes in it. When someone visits the page, the server sets a cookie containing the time and date of when he/she loaded the page. Anyone can change the contents of the textarea, but upon submitting the form, the server checks the cookie to see when you loaded the page, and checks whether anyone has made any changes to the field in the meantime (this is done to prevent users from accidently overwriting each other's changes). I visit the page and look at the textarea; it contains three lines. I add a fourth line. Before submitting, I reload the page to see if the webmaster has activated that fancy new design he has been talking about. He hasn't. I hit submit. In the meantime, someone has composed the sequel to War and Peace in the <textarea> and submitted it. Which is no problem, as the server will check my timestamp cookie when I submit my four lines to make sure that no changes have been made in the meantime, right? Now, when I reloaded the page, the cookie naturally got updated with a fresh timestamp, but that is just fine since reloading will also cause any new changes to appear in the textare, right? ...right? No. Because of this bug, the <textarea> was *not* updated with the new contents. Congratulations, you just destroyed the sequel to War and Peace. If that is not critical dataloss, I don't know what is. [Adding nsenterprise keyword and adding to tracker of bugs which make Mozilla advocacy harder, as this is currently the only bug preventing me from recommending Mozilla over IE for corporate use.]
Blocks: advocacybugs
Severity: normal → critical
Keywords: nsenterprise
Wow. This is quite the talkative bug. To repeat my comments earlier re: "easy work-arounds"... Browsers since the dawn of time have reset forms on a reload. Changing that behavior now is VERY arrogant. Saying "We're changing the default behavior, but you can go back to the old behavior by changing YOUR stuff" sounds *exactly* like what Microsoft was trying to do with Smart Tags back when IE6 and WinXP were just starting to generate hype. And it also throws us back into the realm of needing to build code to specifically handle each browsers' special quirks. And since most users (and developes) use IE now, how often will the special quirks of Mozilla really be taken into account? The ability to keep form fields in a refresh is actually nice. But it shouldn't be the *default*. Having the option in a context menu or dropdown-menu for the reload button would work, as would a pop-up asking which behavior the user wants (along with a "always use this choice" checkbox). >Why would a webpage call location.reload() in the middle of the user >composing a big post? A number of pages do just that.... I don't know why they'd do that, but the point is that the DEVELOPER made that decision, so they have to live with it. Developers shouldn't have to fight the browser, they have enough problems getting *themsleves* to work correctly. When the browser starts deciding what a page's content should be *without* the user telling it to do so, you've got a problem. At the very least, when you reload a page, form elements with a value="" attribute should be changed to reflect that value (same with textarea). Why shouldn't it? I mean, if I change my html source from <body bgcolor="blue"> to <body bgcolor="red"> and reload, the page changes, right? So how come if I change <input value="blue"> to <input value="red"> it doesn't? And I admit that my arguments above are entirely developer-centric instead of user-centric. However if developers have a hard time making things, the things they make will be of less use to the actual users. Another possible solution: Come up with some way to store "pre-reload" form values, and provide a menu option to re-fill those in, for canses of accidental reloads. Yes, this makes the process non-transparent, but it doesn't break any existing behavior, and puts a special-case solution in a special-case location... under a menu of some kind. (Yes, most users won't even think to look for it... uh... okay, I'm stopping now before I completely lose focus.)
The subject of this bug is the behavior of Reload and Force Reload. Reload is called by the Reload button in the Navigation Toolbar, or from Ctrl+R, or Whitespace Context Menu | Reload. Force Reload is called by Shift+Click Reload or Ctrl+Shift+R. Currently, Reload attempts to get a new page, and then restores user entered data into form elements. Force Reload forces a proxy to reload the page, and does not restore user entered data into form elements. The question posed by this bug is: should Reload no longer restore user entered data into form elements, but instead mimic the behavior of Force Reload as it concerns form elements? Form elements include drop down boxes, radio buttons, checkboxes, and textareas. To answer the question we shouldn't rely on what a new Mozilla user would expect. The behavior of other browsers will create expectations in the minds of new users. If the behavior of other browsers is suboptimal, however, Mozilla should take a better approach. This is a topic where there is no applicable standard. The W3C has not addressed autocomplete functionality in web browsers. Thus, they do not have a relevant tag. Autocomplete=off is a good workaround. It is a proprietary tag supported by both IE and Mozilla in an attempt to fix a problem that the standards don't address. As comment 99 and comment 103 said, Mozilla does not work the same way as IE, and because of that certain web site designs create the potential for data loss. The solution, though, is to add autocomplete=off to the form tag. Although autocomplete=off doesn't work in the textarea tag, it does work in the form tag, for all the form elements including textarea. In Mozilla, autocomplete=off works fine when put in the form tag. On a related note, the W3C is introducing XForms. Bug 97806 would implement XForms in Mozilla. Maybe XForms will have a standard for handling autocomplete-like functionality. There is a "refresh" action in the draft proposal. If it happens, it would be good, but it doesn't help us right now. That leaves the other concern raised: that not fixing this bug would make it too hard to create web sites. We could avoid this issue by making the user decide what to do by showing him a dialog box. We could add a configurable preference for what Reload should do with forms. These are bad options, though, because Mozilla already has too many dialog boxes and a bad case of preferencitis. Mozilla should do the right thing. To determine what that is, we need to consider the goals. They are: making it convenient for web designers to create web sites; protecting users from unexpected data loss; and allowing users to easily reset forms to their original values. When I first started using Mozilla, one of the features that won me over was how it saved the data I typed in textareas. If you navigate back from a textarea, and then return, you'll probably lose the data in IE, but definitely not in Mozilla. For example, in Mozilla go to http://slashdot.org/ , select a story, click on reply, and type something in the textarea. Then, hit the back button. You can go back several pages. Now use the forward button to return to the Slashdot form. Your data is still there. This is nice, and it doesn't happen in IE. If you type a novel in IE, then hit back, then hit forward, you lose the novel. The page is reloaded. IE wipes the textarea. The same problem occurs if you accidentally click on any link while typing in the textarea, then try to go back. This problem isn't unique with Slashdot forms. Other web sites do similar things. If this bug is fixed, Mozilla users would most likely lose this valuable protection for their data. Comment 96 said that if we wontfix this bug, "The client is basically deciding what to display," but that isn't true. Instead, the client is deciding whether to keep user entered data. The web is not a broadcast medium; it's interactive. Adding autocomplete=off to form tags or input tags is not hard. Web designers can do that easily. It's much easier for web designers to add that than for users to get back their lost data. Some people point to Mozillazine as an example of how hard autocomplete=off is to figure out. First, Mozillazine is awesome. Unfortunately, it has experienced a number of bugs. It's not the best designed web site in the world. I still love Mozillazine. A lot. The bottom line is that the example of Mozillazine is inapplicable here. In the past, I was briefly annoyed at Mozilla's refusal to reset forms. If you make changes to a Bugzilla form, forget what the changes are, but then need to change some of the elements back to the defaults before submitting, a Reload will not reset any of the form elements. This was frustrating until I learned about Force Reload. We should improve the discoverability of Force Reload by relnoting it, putting it in the Help files, maybe putting it (along with Reload) under the Go menu, and maybe renaming it to Force Reload/Reset. Discoverability is not a serious problem, however, as most users rarely deal with forms. Enterprise users who need to Force Reload can learn how easily. This bug carries the access keyword. We could better address this issue by putting Force Reload under the Go menu. Mozilla should err on the side of protecting user entered data. Thus, we should keep the current behavior and mark this bug wontfix.
You can't compare Back/Forward to hitting reload. From a user expectation point of view they're not the same thing. If I hit back/forward, I *expect* the form elements to not be reset, but when I click "reload", I expect the page to *reload in it's entirety*, including form elements. > Autocomplete=off is a good workaround. It is a proprietary tag It is not a good workaround for the very reason that it *is* a proprietary tag. We should be moving towards *standards* to make designing cross browser compatible sites easier, not harder.
Is the patch in the 2002061308 build? I can repro the first testcase. Only after 2 or 3 reloads the typed text dissapears...
> The same problem occurs if > you accidentally click on any link while typing in the textarea, then try to go > back. This problem isn't unique with Slashdot forms. Other web sites do similar > things. If this bug is fixed, Mozilla users would most likely lose this valuable > protection for their data. Why? What happens on back/forward is unrelated to this bug. We're talking about *reload* behavior here. There's no reason why we can't reset the form elements on reload but still remember them on back and forward.
I'm with you 100%: should not -- or else where would we use form value restoration? -- be included in this bug. But the summary does not make it clear enough that this bug refers to manual refresh/reload only, which explains the confusion above. I suggest adding the words "manually" and "refreshing" to the summary: "Form elements don't reset upon manually reloading/refreshing page". I think that would be a win-win situation, because 1) no words are removed from the summary, so people could still find it the way they can now; 2) more variations on keywords in the summary makes it easier to find; and 3) it would be clear that it refers to manual reloads only (not back/forward).
Would fixing this bug have any effect on pages that are set to automatically reload? On an unrelated note, if we fix this bug, upon manual reload we should put all the changes to the form state into Undo/Redo. That way a user can get back their data even if the user accidentally hits the reload button, or manually reloads because part of the page or an image didn't download, or wants to see an updated copy of a dynamically generated page, but does not want to lose the data that they just typed.
Keywords: mozilla1.0mozilla1.1
Summary: Form elements don't reset upon reloading page → Form elements don't reset upon manually reloading page
Andrew, I guess fixing Bug 134987 would solve one of the issues you raise. As for the other case (you want an updated copy of dynamic page but want the UA to remember the values you entered into some forms), here are some concerns: - what if the page comes back with different forms, different controls or something? Should we then just do our best to match up the names we have for the forms and form elements from the old page? - What if the same names now correspond to different types of controls? - And what if the new forms/controls are in a different order and have no name/id attributes? (I haven't seen these points raised by anyone else.) The point is that I don't think there's any guarantee that refreshing a page would even give you the same forms/controls to deal with. It seems to me this is one reason it's bad form to restore form values on reload in the first place. I guess what I'm trying to say is that if you want a new version of a dynamic page that has forms, but want to keep values you entered then: 1) don't fix this bug (not to appetizing) 2) don't enter stuff in a form and expect it to still be there on reload Looking at it another way, it is sort of the spec that fails us here, because there is no way to communicate to the user agent which fields are/aren't subject to change/removal on reload. For example, the "Additional Comments" control on this page is not subject to any updates on reload, and it will always be present in the page. If there were a way to communicate that information to the user agent, through an attribute -- e.g., "static" or something -- then the user agent would be able to restore the user-entered value for that control on reload, and wipe the user's changes to other values that didn't specify "static." But there is no such animal afaik (maybe in XForms does?). Unfortunately, I think we just can't have it both ways. And I just don't think it is proper/good form to be restoring user-entered form values on an explicit manual page reload.
I don't agree that there should be a confirm dialog box. We have too many dialog boxes already. Another one in this context would be pointless and annoying. If the undo data is mismatched badly with the new form controls, just don't undo. Even if the undo data generates no error, but still goes in the wrong boxes, at least the user didn't lose significant data. They can, in this inevitably rare and worst case scenario, save what they typed.
Comment #111 wrote: > What if the same names now correspond to different types of controls? I have had to tell users to use MSIE for *exactly* this reason. I hate doing it, but it's easier to tell users to use a client that doesn't override the data sent by the server than to train them to learn about how this bug works and when they can expect good data to show in the form, and when they can expect bad data to show. I use mozilla myself, and cringe every time I have to do a shift-reload because I know that most users will never "shift-reload" in their lifetimes. It pains me to tell folks who *voluntarily* downloaded mozilla that they need to give it up for this web application, and that's why I've voted for this bug to be fixed. Note that this bug also blocks bug 92997 (makes mozilla advocacy harder). If mozilla-loving geeks have to push msie on their users, then we have a certain advocacy problem. -matt
>Even if the undo data generates no error, but still goes in the wrong >boxes, at least the user didn't lose significant data. They can, in this >inevitably rare and worst case scenario, save what they typed. But will the average person even notice? Say there's two textareas on a page, Info1 and Info2. Both are filled out, and then the user inexplicably pushes reload. The new page as Info2 and Info3. The old second field is now the new first field, with a blank second. Most users' first response would be: Aww, my second response was lost! They would then re-ype the second response and hit Submit. THIS is also data loss of a sort, because they have submitted information they did not mean to. And yes, such a weird form would be bad design. And as for this question: >Would fixing this bug have any effect on pages that are set >to automatically reload? You mean like with meta tags/HTTP headers and/or Javascript? Yes, probably. But isn't it pretty stupid design to have pages with forms automatically refresh in the first place? Developers have had to "deal" with this behavior forever... it's not like changing to the expected behavior will break existing pages... Personally, I think the best solution is to have some sort of "redo" effect for forms, essentially keeping two sets of form data for every page - one that's currently shown, and another from before the most recent reload. This becomes useless if the user performs several reloads in a row, however, and also requires some sort of GUI. However, I bet this functionality wouldn't even be needed by a vast majority of users.
In the example above, Mozilla could save info1 and info2 data into redo or undo upon a manual reload of the page. Then, if the reloaded page came back without an info1, but with an info2 and an info3, then hopefully, if the user tries to "redo," Mozilla would detect that the data it saved for info1 can't be restored anywhere, would throw an error, and refuse to redo. In this very rare case, the user would lose data, but at least Mozilla did everything it could to preserve the user's data. Good point about automatic refresh. To amplify what you said, the same redo/undo functionality would be available anyway.
Blocks: 154170
Adding autocomplete=off to a form is not a solution. That prevents Mozilla from restoring the contents of the form when the user hits Back or Forward. I imagine that a cache-control header does the same thing.
Adding nsdogfood keyword (justification: Due to this bug, I'm unable to use Moz to debug web applications.)
Keywords: nsdogfood
I was thinking the same thing until someone pointed out shift-reload. Now I just do that. It's annoying, but it does the job. -matt
*** Bug 165590 has been marked as a duplicate of this bug. ***
Blocks: 166560
No longer blocks: 166560
*** Bug 177345 has been marked as a duplicate of this bug. ***
Keywords: mozilla1.1mozilla1.4
I was going to report this as a bug, but finally found it here. Currently, if there is the form tag has autocomplete="off", the fields get reset during Back and Forward navigation. I can't find anybody that thinks this is good... in fact, it seems to be a very bad thing. autocomplete should *only* affect autocompletion of form fields, not the persistence of state during navigation. At least, that's my opinion :)
Ben Houston, see also the discussion in bug 180117.
*** Bug 185817 has been marked as a duplicate of this bug. ***
*** Bug 193143 has been marked as a duplicate of this bug. ***
*** Bug 198189 has been marked as a duplicate of this bug. ***
*** Bug 200093 has been marked as a duplicate of this bug. ***
adt: nsbeta1-
Keywords: nsbeta1nsbeta1-
*** Bug 210095 has been marked as a duplicate of this bug. ***
*** Bug 210440 has been marked as a duplicate of this bug. ***
*** Bug 211859 has been marked as a duplicate of this bug. ***
*** Bug 216181 has been marked as a duplicate of this bug. ***
It's not my habit to pollute a bug comments, but I think this one deserves to be rediscussed. The bug has many votes and high number of duplicates: - this bug is currently the 43th most duplicated Browser bug and the 5th most duplicated bug with a severity higher or equal to critical. - the bug as now 22 votes. It's part of the 163 Browser bugs with more than 21 votes. It's also one of the 7th P1 Browser bugs with more than 21 votes, and the most voted bug with a severity higher or equal to critical. But it's still targeted to future. Furthermore there's not been any constructive talk in that bug for more than one year. That makes it a high candidate for retriaging/refocusing. I am personally hitting the problem in an about to be currently deployed application. I admit that shift-reload solves the problem but it's not a solution for non-knowledgeable users. Furthermore, using Reload only creates an inconsistent state where some of the fields (like non editable text fields) are reset correctly), but other text fields keep their overridden values. This could also create other problems to my point of view. Let's say a page contains a drop down list with 3 items. None selected initially. The user selects the third one. The user reloads and the newly generated page only contains 2 items in the drop down list. What should mozilla select? What if after reload there are this time the same number of items but the meaning of the content has changed. Why should mozilla pre-select an item based on former form content? I understand the benefits when doing back/next but that's not an excuse to create such inconsistent behavior. That's confusing and decisions are not simple to make. I would really like this issue to be rediscussed.
A suggested fix (from my POV as both a user and a web developer): - reload *always* resets form information. - the "back" button triggers a "restore form data?" dialog box, IF the previous page has been loaded from the cache. AND IF form data on the previous page was modified by the user. This lets mozilla keep the desirable feature of preventing back <-> forward data loss. It also avoids developer frustration (which I had plenty of when I realized this was mozilla's default behavior). Preventing data loss is admirable, but not at the cost of breaking functionality as basic as "reload". (and it is broken. The number of duplicate bugs should be evidence enough).
> the "back" button triggers a "restore form data?" dialog box, No. No dialog box. Perhaps the right thing to do is to differentiate the "reload" and "back/forward" cases in session history and not restore form data in the former case. If there is agreement from whoever now owns this code (Adam? jst? Some UI person? No idea who it really should be) to that effect, I would be willing to try and do it.
You're right. Normally I'm dead against more dialog boxes too. I thought this might be an exception because users are accustomed to dialog boxes on forward and back operations ("This page contains POST data. Do you want to re-send it?") But simply differentiating the reload behavior from the back/forward behavior is a good solution. A suggestion for managing this as an option: /------------------------------------------------- | Keep modified form data [] on reload | [] on back/forward \-------------------------------------------------
> "This page contains POST data. This should only happen on very rare pages (secure no-store pages) if the cache settings are reasonable... Even then, it's arguably a bug. This is also not the sort of option for which it makes sense to have UI, or even a hidden pref. It should be something we just decide on and do one way or another.
Well, I'm really not sure what caching has to do with this, because even pages with a no-cache directive should *not* reload when you just go Back to them. As I've said before, going Back should be equivalent to having opened a link in a new window and then closing that new window. Similarly, there should never be a prompt about POST data when you just use Back/Forward. Of course, this is all my opinion and point of view, but this is how Opera behaves and I've never seen this as a problem. Quite to the opposite, I've found it rather pleasant/useful.
I don't think that would work for the issue that got me into this in the first place. I had a browser window that refreshed periodically where I could rate things with a set of radio buttons. If it was unrated, however, none of them would be selected - or at least, none of them would if mozilla hadn't helpfully filled in the last value. Since the page refreshes every minute, putting a dialog in there isn't going to help my cause at all.
In Comment #135... > I thought this might be an exception because users are accustomed to dialog > boxes on forward and back operations ("This page contains POST data. Do you > want to re-send it?") As a user accustomed to such actions, I'd like to point out that the message described is an outstanding candidate for a little check box that says "Never, ever, under any circumstances show me this freaking annoying dialog box again." ANOTHER freaking annoying dialog box is not required.
> ith a no-cache directive should *not* reload when you just go Back to them This is the theory, yes. In practice, online banks block browsers that do this faster than you can say "please, no", since a session history that behaves like this makes it possible for someone to come along, hit back, and get info on your account. Hence _only_ for https pages, do we not act this way.. In any case, all this is tangential to the bug. What's really needed here is module owner feedback on comment 134.
Forget the dialog box suggestion. That was a bad idea. Dialog boxes nearly always cause more problems than they solve. Mea Culpa, I should have given it more thought.
Reload leaving boxes filled in is convenient for debugging. If we do change Reload to clear everything out, it would be nice if the "reload but leave formfields alone" behavior were available through JavaScript, so a bookmarklet for this would be possible.
OK. After some testing by Lloyd (daltonlp@daltonlp.com) it looks like the reason people don't see this problem with IE is explained in comment 13. In brief, 1) If the reload fetches the HTML from the cache, IE restores the form values 2) If the reload fetches the HTML from the network, IE does not restore the form values. This leads to totally unpredictable behavior for users, since they can never tell whether the HTML will come from cache or network, hence whether the form will be cleared or not. On the other hand, it leads to totally predictable behavior for web developers, since they're reloading a page after changing it server-side and hence it ALWAYS comes from the network. Further, typical CGI scripts don't send any Last-Modified headers and hence are reloaded from the server every time on reload. Hence the claims that IE does not restore form values that's made so often in this bug. See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncodecorn/html/corner122099.asp for some (inadequate, since it does not mention when the form data does not stick) documentation Microsoft has on this (again, thanks to Lloyd for the link). None of this indicates what Mozilla should do, of course. Implementing what IE does is not acceptable, because of the unpredictability for the user.
Here's a more recent summary of IE's behavior: The form is repopulated only if the following items are true: * The Web page is not an HTTPS (or secure) Web page. * The page is cached to disk. * The page has not changed since you filled out the form. from http://support.microsoft.com/default.aspx?scid=kb;en-us;174550 I agree that this creates unpredictability for the user. I agree that mozilla should have a better method. I don't think we're quite there yet :)
Ok, after much more thought: Form data handling is an area where there's no established spec to follow. There are two extremes: 1) Keep all form data on reload/back/forward (this is the current default behavior, with shift+reload invoking mode 2). 2) Don't keep any form data on reload/back/forward (some security-conscious and developer-oriented folks would like this) I'd humbly suggest making form data behavior dependent on a mode switch, changable during run-time. Two modes are described above. More may eventually be defined, by mozilla developers or the W3C. The debate over how to present these modes to the user, and which mode to choose by default, is separate. Right now, changing modes requires recompiling, which makes the whole debate not very efficient.
Please, can somebody plausibly explain to me how back/forward have anything to do with reloading? Reloading should reset form elements because... well, because reloading is a sort of reset kind of thing; back/forward, of course, should not, because it's just going back to where you were. If you wanted to lose your data in the form after a back/forward, you could still just reload.
> Please, can somebody plausibly explain to me how back/forward have anything to > do with reloading? Unfortunately, reload is tied to the history mechanism in NS4 and IE, hence also in Mozilla. Which means that it does act much like back/forward and worse yet pages depend on this behavior... (as in, many pages out there programmatically call reload() and expect that to NOT wipe out user data... in NS4 it doesn't even wipe out the effects of DOM manipulation, which is even more bizarre).
*** Bug 225627 has been marked as a duplicate of this bug. ***
Blocks: majorbugs
*** Bug 219169 has been marked as a duplicate of this bug. ***
The case I care about, which is touched on in comment 55 (and maybe elsewhere; this bug history is too long to read easily!) is where the page has changed on the server, and you hit reload, and don't get the new server values. A pointed example (using Bugzilla!): you load a bug and it has priority P3. You leave this window open while someone changes the priority to P1 and adds some comments. You want to add another comment and have noticed the added comments and to avoid the midair collision you hit reload. Then you type your comments and submit, and then if you're lucky you go double-check your own update and notice you demoted the bug back to P3 before your manager does :) So I doubt this is new info, but is there any argument that users wouldn't want this case fixed?
I don't think there's a single right way to do this. I think the best solution is to let users force forms to always reset with a setting in prefs.js or user.js.
(don't know what I was thinking rambling about this in bug 133946) The whole dataloss argument here is due to the fact that visible form fields remember their values on reload, while hidden form fields get new value from the reloaded page. This seems awfully wrong. How hard would it be to make hidden and visible form fields behave the same on reload? That would fix the situation of incorrect data being submitted, regardless of what behavior (to restore or not) is eventually decided upon.
That would basically involve moving form state restoration out of frames and into content (which should probably be done on general principle).
*** Bug 235929 has been marked as a duplicate of this bug. ***
(In reply to comment #153) > How hard would it be to make hidden and > visible form fields behave the same on reload? That would fix the situation of > incorrect data being submitted, regardless of what behavior (to restore or not) > is eventually decided upon. I think this is not true. Consider the following: You have a table, and every table-cell do have some text in it. The user representation of some data. corresponding to every table-cell, you have a hidden field with the machine representation of the same data. With some javascript it is possible to change the text in the table-cell and also the hidden field value is changed. (This is the situation where i found this bug.) Now the automatic value refresh of the form cant know about this, so on reload the table-cell shows the correct value, while the hidden field value is set to the remembered value. If the developer set the value="" parameter of an input-element this value should be taken. I think the only situation where the automatic is wanted, is when pressing the back button, and then, not only the form should be restored, the complete dom-tree should be restored. Some of you might dislike javascript, but in an full blown business application it is needet like a bit of bread.
after reading all these comments in detail, i found the solution by adding autocomplete="off" to the hidden fields works in my case too :-)
*** Bug 224041 has been marked as a duplicate of this bug. ***
*** Bug 237945 has been marked as a duplicate of this bug. ***
*** Bug 241660 has been marked as a duplicate of this bug. ***
what's the status of getting this fix. as web developer and user i found this to be a huge bug. i don't understand why anybody would not want a fresh page loaded.
I apologize if I missed the following variation of this issue in perusing the 150+ replies that preceded this one :-) If I did, maybe this will provide a clearer example. I have a form created by JavaScript. The purpose is not to send data back to a server, but store it in a JavaScript object (which writes the form when it displays itself). The form's text fields are filled from the object's initial properties, and they have an "onChange" event to capture and store user-entered data. On either refresh or hard-refresh of the page (Mozilla 1.6, 1.7rc3, Mac OS X 10.3.4), the JavaScript object's properties have been restored to their initial values, but in the form these values are overwritten by the previous user-entered values, and the object is now out-of-sync with its display. One person suggested that, if the user-entered form values are restored, the entire DOM of a page should be restored, too, which I think would fix this issue. The other possibility might be to treat this form-filling as if a user had actually filled out the form immediately after load, and so fire the onChange event in the same way. For what its worth, I personally would want a hard-reset to return a page to its initial state, while a soft reset should really be for display issues, and so retain all previous-modified state information.
For a perfect example of why the current behavior is wierd/bad/immoral: 1) Browse to http://www.tumyeto.com/main.php 2) Notice in the "Rider Profile" box that the name in the dropdown matches the currently displayed rider. 3) Hit reload. 4) Now the rider name in the dropdown is out of sync with the rider being displayed. 5) View Source, find the rider profile box, you will see that Mozilla is deliberately DISOBEYING THE SOURCE CODE of the file it is rendering.
Just so we're clear--If you hold down "shift" while clicking reload, the rider profile and drop-down do match. It's only on normal reload that the drop-down selection is forced by mozilla to the pre-reload value. But this is a good example of why the current behavior sucks. At the very least, mozilla needs to obey tag attributes like: value="" and selected = "selected" For a drop-down list, if there was no explicitly selected option, it would be ok (IMO) for mozilla to show the pre-refresh selection, Same thing for other form elements. I think mozilla's current behavior is leaning just a little too far toward convenience at the expense of solid design. It's frustrating for web developers who just want the browser to (pretty please) do what the valid html says.
Ladies and gentlemen, boys, girls, and wannabes: Please stop adding comments to this bug that say "This is bad!" or "Why this is bad". Yes, Mozilla developers know about the bug. There are at least 50 people cc'd on this bug (who all receive the same bugspam you do), who are all waiting and watching for someone to step up and fix this bug. There are 165 comments on this bug (counting this one). To date, there have been ZERO attachments on this bug. No patches, no testcases specific to this bug, nothing. This bug is nearly four years old as filed. This will be fixed when we have a volunteer contribute a patch, when that patch gets r+ and sr+, and when it's checked in. Crying about the problem (duped over and over and over again) does not help solve the problem. Is there anyone who is willing to accept this bug and start working on a patch? For the serious developers on this cc list, I apologize for the bugspam.
*** Bug 248832 has been marked as a duplicate of this bug. ***
*** Bug 255418 has been marked as a duplicate of this bug. ***
Our problem on a page generated by a servlet with a number of checkboxes seems to be resoned here also: The page is reloaded, some checkboxes (all the same name but different values) disappear but the same in order will be checked (no checked atrribute rendered!). The former checked once values are not rendered again by the servlet. Lets say they have been the third and fifth. After reload the third and fifth checkbox are checked again (by Mozilla, does not happen on IE...) also having different value attribues.
*** Bug 256823 has been marked as a duplicate of this bug. ***
*** Bug 239730 has been marked as a duplicate of this bug. ***
Flags: blocking-aviary1.0?
For Firefox 1.0PR on Windows: Hit Ctrl+F5 to refresh the page without the cached form entries. It refreshed to the (source) selected options in my case.
For Firefox 1.0PR on Windows: Hit Ctrl+F5 to refresh the page without the cached form entries. It refreshed to the (source) selected options in my case.
would need a patch and lots of testing for inclusion in aviary 1.0
Flags: blocking-aviary1.0? → blocking-aviary1.0-
What is aviary? Is that the new name for Thunderbird?
Aviary = Firefox + Thunderbird. Aviary 1.0 = Firefox 1.0 + Thunderbird something.
*** Bug 262665 has been marked as a duplicate of this bug. ***
*** Bug 264043 has been marked as a duplicate of this bug. ***
*** Bug 265470 has been marked as a duplicate of this bug. ***
*** Bug 274795 has been marked as a duplicate of this bug. ***
*** Bug 263363 has been marked as a duplicate of this bug. ***
*** Bug 249972 has been marked as a duplicate of this bug. ***
*** Bug 283094 has been marked as a duplicate of this bug. ***
*** Bug 282030 has been marked as a duplicate of this bug. ***
At http://www.sff.tigerheron.com/ The Search SF&F box is a SELECT item in a form. It has the value "SF&F Books", which is the first item in the list and the item specified as "selected" by the code: <select name="SearchIndex"> <option selected="selected" value="Books">SF&amp;F Books</option> <option value="Books">SF&amp;F Young Adult Books</option> <option value="DVD">SF&amp;F DVDs</option> <option value="VHS">SF&amp;F VHSs</option> </select> On a page reload, the box displays "SF&F Young Adult Books", which is the *second* item on the list and which is not specified as being selected. As stated elsewhere, a Shift-Reload displays the correct item.
Flags: blocking-aviary1.1?
*** Bug 274746 has been marked as a duplicate of this bug. ***
This bug is INVALID (not WONTFIX). Browsers going back to Netscape 1 (and almost certainly NCSA Mosaic, but my memory fails me) have restored saved form data on reload, but not on shift-reload. See bug 293258 for a recent regression in this age-old browser behavior. Feel free to test Safari, Opera, and IE6 and either confirm compatible behavior here or report bugs to those browsers' vendors. When testing, beware form-bearing pages that use HTTP cache control to prevent reloading from cache. /be
Status: REOPENED → RESOLVED
Closed: 24 years ago20 years ago
Resolution: --- → INVALID
(In reply to comment #186) > See bug 293258 for a recent regression I meant bug 294258. /be
Flags: blocking-aviary1.1?
*** Bug 295250 has been marked as a duplicate of this bug. ***
No longer blocks: majorbugs
It seems self evident to me that if the rendering disagrees with the underlying html, as is the case when the selected option of a select list is not in fact "selected", this is a gross bug, which makes it impossible to create dynamic web pages that behave properly and predictably on Mozilla. --Frank Hanny fchanny@lbl.gov
Whatever comment 189 is talking about, it's not this bug. File a new one with a specific complaint and test case and reproduce-by steps. Portentous assertions in this bug are just time-wasting noise. /be
Status: RESOLVED → VERIFIED
*** Bug 283205 has been marked as a duplicate of this bug. ***
*** Bug 305482 has been marked as a duplicate of this bug. ***
To comment 189: This is actual connected as indicated by Gavin Sharp who has made my bug 305482 duplicate of this one (see it for details). I still think it is not dupe but I won't kick with a horse.
*** Bug 322579 has been marked as a duplicate of this bug. ***
*** Bug 325706 has been marked as a duplicate of this bug. ***
*** Bug 349505 has been marked as a duplicate of this bug. ***
*** Bug 252691 has been marked as a duplicate of this bug. ***
*** Bug 338593 has been marked as a duplicate of this bug. ***
*** Bug 325360 has been marked as a duplicate of this bug. ***
*** Bug 357200 has been marked as a duplicate of this bug. ***
(In reply to comment #200) > *** Bug 357200 has been marked as a duplicate of this bug. *** > My original bug was related specifically to the radio buttons saving their disabled states in the Form Manager, although other form elements such as the submit button do not save their disabled state in the Form Manager. This is inconsistent, and in saving the disabled state of the radio buttons causes a problem. This is something that requires attention, and is not a bug relating to the greater principles of the Form Manager, just the saving of the disabled state of the radio button.
The idea that clicking reload should not put the page into the same state as when first loaded seems wrong to me. For example, in my app I have hidden form fields which are only manipulated by scripting. The scripts assume that the hidden fields are in a defined state (empty or initial value) until updated by the scripts. Clicking "reload" breaks this assertion - the javascript variables are all reset but the form data remains - and the scripts fail as a result. This is nothing to do with user experience since the fields are hidden (see bug 376294). FWIW I observe form data being reset with IE6 when clicking the reload button.
Component: History: Session → Document Navigation
QA Contact: claudius → docshell
Even after all this discussion I still think Firefox is WRONG to not clear form elements on refresh. All of Opera, Chrome, Safari and IE clear form elements on reload for http:// URLs (and all except IE do for file://). I also have had problems with form state being out of sync with javascript state which is reset on reload, see my comment #202. Perhaps I'll enter a bug with a test case for that but it'll probably just be dup'ed against this one.
(In reply to comment #206) > Perhaps I'll enter a bug with a test case for that.... Bug 465203
(In reply to comment #202) > The idea that clicking reload should not put the page into the same state as > when first loaded seems wrong to me. For example, in my app I have hidden form > fields which are only manipulated by scripting. The scripts assume that the > hidden fields are in a defined state (empty or initial value) until updated by > the scripts. Clicking "reload" breaks this assertion - the javascript variables > are all reset but the form data remains - and the scripts fail as a result. > This is nothing to do with user experience since the fields are hidden (see bug > 376294). > > FWIW I observe form data being reset with IE6 when clicking the reload button. My IMHO is that remembering form element values upon reload is COMPLETELY INCORRECT! Do you understand that you put the reloaded page into some unexpected INCONSISTENT (!) state? Just because that's nor the OLD version of page nor its NEW version. That's some another "MIXED" version. The obvious example of harm caused by this inconsistency is in Bugzilla's behaviour. All bug edit forms contain delta_ts (timestamp) hidden field used for edit conflict detection. So, when you submit an OLD version of form, you'll get a warning about "Mid-air collision". But if you use Firefox and reload this form, delta_ts IS UPDATED, but other form fields ARE NOT. So when you submit this "NEW" (but really "MIXED") version, you overwrite changes made by other people and there's NO MID-AIR COLLISION! I'm shocked! The bug lasts NINE YEARS, has 23 votes (with my one), has many duplicates, and the resolution is "invalid". :-((((
Re: Brendan: "Browsers going back to Netscape 1 (and almost certainly NCSA Mosaic, but my memory fails me) have restored saved form data on reload, but not on shift-reload." 1) Just because (if) many browsers have done things historically wrong does not mean they should continue to remain so. 2) Browsers that historically have done this have only historically done it to static pages that have not changed. Pages dynamically generated have not and should not exhibit this behaviour. 3) Frank Hanny said "It seems self evident to me that if the rendering disagrees with the underlying html, as is the case when the selected option of a select list is not in fact "selected", this is a gross bug..." and you said, in reply, "Whatever comment 189 is talking about, it's not this bug. File a new one..." Just because you didn't "get it" doesn't mean you should behave rudely. I understood what he was saying clear as day, he is right, and it *is this bug*. This bug which is not INVALID and should not be marked WONTFIX, because it's perfectly valid and needs fixin'. To illustrate Frank's point: if I write HTML that says: <form> Text: <input name="foo" type="text" value="Foo"/> Choose: <select name="ba*"><option value="bar" selected>Bar</option><option value="baz">Baz</option></select> </form> Then when a user first gets to the page he/she sees: Text: [Foo ] Choose: [Bar [v]] If a user then changes the text field to say 'BimBamBoom' and select 'Baz' from the drop-down, and *then reloads the page* the *HTML REMAINS THE SAME* but what is being rendered on the page is equivalent to if the HTML had said: <form> Text: <input name="foo" type="text" value="BimBamBoom"/> Choose: <select name="ba*"><option value="bar">Bar</option><option value="baz" selected>Baz</option></select> </form> Note that therefore *what the browser renders* is *not* the value the person who wrote the page intended upon reload. This is therefore a bug and valid. Please correct the status of this bug immediately. Note to Vitaliy: 26 votes (not counting the affirmative comments that didn't vote) and ten years, now. One would think this would not be ignored.
(In reply to comment #213) Dodger, if you change strings in form, Text->TextX, Choose->ChooseX, Bar->BarX, Baz->BazX, just before your Reload, as you know, you probably see display result like next. > <form> > TextX: <input name="foo" type="text" value="BimBamBoom"/> > ChooseX: <select name="bar"><option value="bar">BarX</option><option value="baz" > selected>BazX</option></select> > </form> It's done on purpose - to keep user's input in form upon "Reload", in order not to loose user's input in form by "Reload". It's concept and DESIGN of functionality named "Reload" of many browsers since initial, which is probably inherited from NCSA Mozaic. Shift+Reload is for reload HTML page without keeping user's input in form, and this is also DESIGN of many browsers since initial, although name of functionality of "Shift+Reload" depends on browser. (In reply to comment #213) > Note that therefore *what the browser renders* is *not* the value the person > who wrote the page intended upon reload. Dodger, are you talking about next phenomena? (a) When Web designer returns completely different <forms>'s of different id/name at completely different location in window at comletely different position in HTML structure, form content is restored in form(s) by "Reload" as usual, as traditinally. Then, dislayed result sometimes becomes different from recent Web desgner's thought. It's mainly by; - Reload is mainly for browser user's convenience. - Web designers usually don't understand functionallity of "Reload". - There is no way for server to know the HTTP GET is for which of Initial Load, Reload, Shift+Reload etc. And, there is no way to inhibit restoring of form data by "Reload" of browser which is for browser users instead of for recent Web designers. So, server side application basically can do nothing on browser's behaviour of "Reload" for browser user. - Browser user can't know "Shift+Reload" is mandatory or not in order to obtain display result which recent Web designer want to show. - Current "Reload" implementation doesn't care for such dynamic or random changes on form elements in an HTML between concecutive two HTTP GETs to absolutely same URL. (b) When designer returns different SRC of <iframe> when "Reload" by user, or JavaScript changes SRC of <iframe> while loading of HTML by "Reload", the change of SRC is not reflected to rendering result, because <iframe> content is restored from history in order to keep last displayed URL in <iframe> by user upon "Reload". Both are known issue for recent Web designers and bugs are already opened. Vitaliy Filippov and Dodger, please don't add comment for complaints of "Displayed result by Reload is different from your thought or opinion" to this very old bug of next bug summary which is caused by user's misunderstanding of functionality of "Reload" of many browsers. > Form elements don't reset upon manually reloading page Please don't request to kill functionality of "restoring form data by Reload" for many other browser users including me. If it'll be killed, I probably loose my typed text frequently at many Web sites including B.M.O. One of causes of above (a) is that current "Reload" simply restores form data based on sequence number in an HTML(probably can be said N of document.forms[N]). As many Web designers change id/name etc. when he sends different forms, care for id/name of form elements upon restoring of form data can be a solution. Form structure check is also a solution. Check of id/name/element-type of parent node of form may be a solution. Anyway, if you are talking about issue like above (a) or (b), please search bugzilla.mozilla.org well for already opened bugs via Advanced Search.
I find that discussion of Reload vs Shift-Reload confusing. I thought Shift-Reload is for telling the browser to refresh its cache, not for giving it permission to undo changes I've made in forms, which it should do anyway. Speaking from my own usage patterns and experience -- it's not like I can claim to have been involved in the design of Navigator 1.0 or anything -- I don't expect the browser to persist my input on Reload. I'm intentionally asking it to reload the page! (Having the browser keep my input across back/forward is an entirely different matter: very useful, and important. But not across Reload.) Whatever. It's pretty clear this bug isn't going to get fixed; the people who matter either haven't noticed it, don't think it's important, don't care, or don't think it can be reconciled with other behavior they find more important. (It's certainly a real bug; I continue to see people post incorrect updates to an internal bugzilla, obviously due to this bug.) The result of this, sadly, is that I mostly use Chrome instead of Firefox, so I don't really have to care either.
Maybe we are just busy elsewhere. It's easy to mix up other bugs' symptoms and blame them on this bug. But bottom line, if Firefox is the only browser that saves form field data across reload but not shift-reload the I suppose we should go with the crowd. (Matt, will that get you back on Firefox instead of Chrome? Mail me, no need to comment here again.) File a new bug please, this one is old and it has served its purpose. Also, the Reload button and gestures/modifiers for it are Firefox, not Core / Document Navigation. Please cc: Alex Faaborg for his user experience expertise. /be
Perhaps the description of the new bug could point people towards (calmly) voting for or against a change rather than commenting endlessly ? Otherwise, history could repeat itself...
I do not consider this a bug. I rather like the way this works. If you fill in a form and then either reload the form or advance the form to the next page and go back, the form contents will remain. Holding the shift key when hitting the reload will clear the page contents. This greatly aids in debugging form handlers as you can move back and forth without retyping the form content each time. The proper method to clear a web form is for the designer to use a "clear form" button. This clears the form properly and provides the user with an easy to understand reset mechanism.
I consider it a bug. Reload should reload default values in forms - the original "load" loaded the defaults - the reload is repeating the first. One must assume that redoing something is as close as possible the original act repeated. A practical objection is that I am using Ajax to calculate a price based on simple form variables such as number of people, I am coding in PHP. I have PHP functions which take a array representing the values and names for a series of pull downs - so typically something that will give the user a choice of number of people 1 to 10, bound into this PHP is clearly defined defaults which are then represented in the usual fashion in the initial values of the form fields. When PHP is outputing the page it calculates an initial price based on the initial or default form fields. The Ajax functionality calls the same final PHP functionality although the code route is obviously different - this is the nature of Ajax. The calculations all end up in the same PHP code for reasons obvious to anyone concerned with code reliablity and maintainability. The problem I have is that when I "reload" the page in Mozilla the form elements stay at the values that the user has changed them to whilst the calculated price defaults back to represent the default form values, there is now a disparity between price and form data which is not present on (say) IE. Non of the PHP code reads the form values - a moments reflection !! PHP is server side. Instead the initial calculation of price is performed solely in PHP because the form is written by PHP and so PHP is hierarchically higher and has control over the defaults or initial values for the form so this is fine as far as any sensible measure of coding standards. When the user creates an event by changing a form field then the usual Javascript/Ajax methodology ends up passing the modified form values to the same PHP code that performed the original calculation. The method for updating the price via Javascript is not immediately useful for the initialisation of the price ( ie calculate using the default values for the form ) because for that we need an event to react to. Ajax is useful but its messy and I try and use it and Javascript to a minimum. It seems crazy to me that I have to add even more "pollution" by adding handlers listening for page load or page refresh in order to call Javascript functionality to read the "default but not really default because of the Mozilla bug" form values and perform the calculation - this shouldnt be necessary - PHP can do all of that cleanly and nicely with no event handlers provided I can be sure that at any stage that the PHP runs then the defaults that I specify and calculate upon are honoured by the browser. It would be a whole lot easier if the most obvious, simple and honest meaning of the word "re-load" was being honoured here. As I said at the start - loading a page does not depend on history - the classic meaning of "re-verb" is to do "verb" a second time in an identical fashion - of course language is usually bent to fit the purpose and when we say we are repainting the house we all know its ontop of an existing layer of paint and so not an indentical repetition but in software and science I would say that the meaning and intention of "re-verb" is understood to mean that wherever possible we do not deliberately change the outcome, there is an expectation of repetition. As for the hassle of re-filling in form fields. Non-professional users will suffer - but they also suffer if they forget to back up their work or dont set auto-backup - this is the nature of all computing, the unwary who are not protected by auto-save will always have the odd hair tearing session - some may learn some may not. Personally I very rarely type into any text box without at least copying the text into notepad or something else from time to time as a backup. Sympathy for those who suffer but corrupting and bending a clearly defined behaviour to fit another purpose is questionable. A proper implementation of "refresh the page but remember all I typed" will require proper design and follow-through with particular thought to technologies such as Ajax which will generally be trying to react to the form - dont change stuff under our feet!!! Jonnie Seasoned ( retired 20 year IT veteran working in the aerospace industries ).
Bug 465203 deals specifically with the issue of javascript vs form state not being maintained in step across page reloads in mozilla. The conclusion there is that this is also the case in other browsers when using the forward and back buttons. Therefore code that relies on the two being in step can also break in other browsers.
What is the point of reloading if it does not re-****-load the page? Reload means to load again. Like the first time. Refresh means "give me the page fresh". Like it was the first time. Without my clutter all over it.
to keep input (hidden as well) field updated, add autocomplete="off" to input tag
I've encountered what might be an odd variation of the general issue discussed at such length here. I created a web page with a disabled-by-default button on it (specified in the HTML as the page loads). The user is allowed to enable the button only under certain conditions. Well, if the button has been enabled, and the overall page is refreshed, it is STILL enabled! Except that I want it to be disabled until the user qualifies to enable it. There is a fairly simple local fix, of course, because I already have an "onload" event handler for the body of the web page (just added a bit of code to disable the button) as part of the JavaScript page-initialization. It is still annoying to have had to do that just because of a "by design" choice made by FireFox developers, when it wasn't necessary for IE or Chrome or Opera.
Comment 225: You are describing bug 654072.
I'm not sure if this is pointed out, but one of the bad side effects of this feature is that: - if you dynamically reorder input elements - press F5 - content is loaded to wrong elements!
This is illogical. User presses reload and it doesn't reload. This is the only browser that does that. And it definitely shouldn't do for hidden inputs. User can't fix those. I don't always have the option to change html, sometimes only js or css and I have to make work arounds.
How is this still not fixed?!
This is happening to me - two different versions of Firefox - I am also trying to have jQuery empty the fields, but it is ignoring it - it used to work fine. It is a modal form that gets re-used on the page. Autocomplete=off has no effect. This is madness.
(In reply to Brendan Eich [:brendan] from comment #186) > This bug is INVALID (not WONTFIX). Browsers going back to Netscape 1 (and > almost certainly NCSA Mosaic, but my memory fails me) have restored saved > form > data on reload, but not on shift-reload. See bug 293258 for a recent > regression > in this age-old browser behavior. > > Feel free to test Safari, Opera, and IE6 and either confirm compatible > behavior > here or report bugs to those browsers' vendors. > > When testing, beware form-bearing pages that use HTTP cache control to > prevent > reloading from cache. > > /be I tested with Chrome and Safari and both DO NOT RESTORE DATA, the above comment is no longer valid. In reading through the comments almost everyone wants Firefox to behave like Chrome and Safari does, that is to restore original page data and remove any data entered by the user. Please make the "Reload current page" button in Firefox work like it does in the other main stream browsers.
I second the remark of Andy Bajka (comment 232). In the development of our web-app, we are badly impacted. This behavior causes us to add additional code, just for Firefox, in our complete application to assure 'normal' behavior. The restore of the form fields is also mostly incomplete, and the resulting behavior of the form unreliable. It is a pity, because with the recent improvements of Firefox one would advise people to use it, if it were not for this bug. I'm hoping you can fix it.
This is just making issues, When you turn autocomplete off the reload behavior is back to normal. But the main idea is not good. Why would you feel the input automatically without notifying the user. this makes it impossible to make a change to the inputs based on their value.
I also can confirm this bug in newest Firefox, and it has a big impact on working with any CMS. Fields can be accidentally saved with wrong data. It also autofills empty fields sometimes with some random data on any form on any page.
There is an React.js component package to handle this bug. https://www.npmjs.com/package/empty-option

This is hitting me pretty hard. I have an unattended kiosk where users need to enter their credit card number. When using Firefox, (I have to support all modern browsers), the previous user's card number is persisted and can be used by the next person. It seems I'm going to have to manually clear the data on reload. I could see a scenario where security vulnerabilities like this go undetected since other browsers do not have this 'feature'.

See Also: → 1754458
See Also: → 1745640
See Also: → 1752250
See Also: → 1758206

Когда фикс ожидается?

Flags: needinfo?(htsai)
Flags: needinfo?(htsai)
See Also: → 1848982
See Also: → 1943000
You need to log in before you can comment on or make changes to this bug.