in reply to OT Rant Re: How to make a link, using cgi.pm, that opens a new window
in thread How to make a link, using cgi.pm, that opens a new window

While forcing the user to open a new browser window when s/he expects a link is amazingly annoying and a pet peeve of mine, there are at least two legitimate reasons for creating a new window. Both apply primarily to web applications: popup windows which act as dialogs (usually javascript instead of _target), and new windows the user expects, e.g. screens for printing that lack navigation elements, like printable reports (especially if they can take a long time to run). Web applications are a special case where the use of the back button can lead to user confusion and error, since the previous screens probably have out of date information on them. For this reason, users of web applications (especially when money is involved) should be trained/told not to use the back button - so if a screen doesn't have navigation, it has to be separate. The web application programmers often compound this problem by forcing a reload of the page - it only makes things worse because then hitting the back button can perform actions.

Here's an example - your're doing online banking, and you transfer money from one account to another. Then you click a link to show a printable screen of your account history, or maybe a receipt. That screen should be a new window, because you should never click the back button in the banking application (notice how they always have warnings about not using the back button after your perform a transaction?). If you did click the back button you could end up transfering the money again. That wouldn't happen if it were programmed correctly, but would you put money on those odds? The programmers probably did the forced reload thing so that you couldn't hit the back button twice and think the money hadn't been transferred. Or maybe it's just tradition, since IIRC that used to be (is?) the default for CGIs...
  • Comment on Re: OT Rant Re: How to make a link, using cgi.pm, that opens a new window