I'm a bit confused whether or not I should make the links on my website that point externally target="_blank". Does this practice negatively affect the usability of your site (i.e. breaking the "back button trail")? Is it commonly found annoying by most users? Is it acceptable in some situations but not others?
I want to make an enjoyable user experience for all of my sites and would hate to do something that annoys my users. What is your experience/advice on the matter?
Most people will say to leave it out, all for very good reasons.
Most people will not tell you this: watch how different people browse using their computer. Sit down for an hour with an average user: a teacher, a piano player, a retired Vet, a stay-at-home mother, or a mechanic. Watch how people who are disabled browse.
You will discover that you should not:
Open new windows (it is highly confusing)
Have menus disappear immediately after leaving them (requires fine motor control)
Use excessive numbers of links on a page (also confusing)
Provide too many features and options
Use Flash animation
Be overly clever
You will discover that you should:
Be clear and concise
Be simple
Keep the user on the same page
Avoid frustrating the end user at any cost
Create an extremely responsive website
And much more.
I've read plenty of usability documentation suggesting that end users resent being forced to open a link in a new window. I tend to agree, if I want a new window I will right click and select whether I want the same window, new tab, or new window.
However, the marketing types believe that opening an external link in a new window will keep the end user on your site because they will eventually close the new window and wind up back on your site.
EDIT: Best information I've read on this subject is in Steve Krug's book "Don't Make Me Think" (website).
MHO: just link it. If I want to open the link in a new window, I can do it myself.
Leave the target attribute out and let your users decide if they want to open the link in a new window. If you want to warn the user that the link will take them away from your site, you can implement a page that makes it clear (US Government sites do this for instance).
I agree that as a user, I prefer to have the choice as to whether or not I open a link in a new window. Unfortunately, many users don't realize that they have that choice, and will lose your website when they click a link to an external site. I tend to err on the side of caution and make external links open in new windows, but it depends on your audience, really.
Here is a nice write up for not opening links in a new window/tab from Smashing Magazine. Essentially, it is better to give users control over link behavior than to decide for them.
Usability guru (?) Jakob Nielsen suggests not opening new browser windows (It's 10 years old though).
Quote:
Opening up new browser windows is like
a vacuum cleaner sales person who
starts a visit by emptying an ash tray
on the customer's carpet. Don't
pollute my screen with any more
windows, thanks (particularly since
current operating systems have
miserable window management). If I
want a new window, I will open it
myself!
Designers open new browser windows on
the theory that it keeps users on
their site. But even disregarding the
user-hostile message implied in taking
over the user's machine, the strategy
is self-defeating since it disables
the Back button which is the normal
way users return to previous sites.
Users often don't notice that a new
window has opened, especially if they
are using a small monitor where the
windows are maximized to fill up the
screen. So a user who tries to return
to the origin will be confused by a
grayed out Back button.
And, every rule has an exception: He suggests document like PDF or DOC that are opened in the browser should be opened in new windows, to avoid confusion.
It's worth mentioning that target isn't valid in XHTML anyway.
I think it depends on the situation. For a simple website with just a few links like about us, contact, services etc., I will not open new window. It is easy for the user to know which page they are at and which page they have just looked at. For a site that has a listing summary page which links to hundreds or even thousands individual listing page. I would prefer to open new window for each listing. It allows the users to compare service/price.... on each opened page. Plus the user doesn't have to click the "back" button to return to the summary page and wait for the same page to load again.
It depends, typically for links to additional content on your site, I would not use the _blank. Anytime I link to off-site content I use the _blank to keep a page open for my site. That way when the user is done on the external site they see my site again.
With modern browsers this usually opens a new tab. I expect this behavior, but usually I control click to get a new tab/window when I want to keep my place.
That being said, for a web application, I'd always leave the target attribute off so the user can decide to open a new window or not.
What people hate is opening links in a new window and not knowing that it's coming. For each external link, go ahead and use target="_blank", but add an icon that suggests you're opening a new window. Wikipedia's double square icon is a good example of this, so you can just grab that from them and capitalize on the literacy that users already have there.
What's great about a 'new window' icon is that users then have the option of opening in a new tab instead, which isn't so obtrusive. I'd also say that many of those vehemently arguing against your proposed approach are looking at it strictly from an aesthetic/usability standpoint, and not in terms of business requirements or the functionality of your own application.
If you think that you or your users stand to gain from keeping users on your site and opening external links in a new window, you get to make the final call on that. Just be respectful about it.
You need to consider what users are doing in your window, when deciding how links should behave. If I could potentially lose a lot of work by navigating to another page, then I might want links to open in new windows, or give me an option to cancel.
For example, if I'm composing a message in Gmail, most of the links show a confirmation dialog, so I don't accidentally lose my work. And the links on top, which go to other applications like Calendar, open in new windows. I think this is a good example to follow.
Related
[Disclaimer: I'm not sure if this kind of question is accepted here as it is about a piece of software deployed already. Rest assured I didn't drop any confidential information. Also do tell me if I violated any rules in SO by posting this so I can take it down immediately]
I have a working Learning Management System web application and I recently received a bug report about a button not showing. After investigating, I have proved that the user was not using the web app as intended. When taking an exam, he was opening multiple tabs to exploit the feature that informs him whether the answer was correct or not. He then will use this information to eliminate the wrong answers and submit all the right answers in another tab/window.
I'm using Rails 4.2. Is there a way to prevent multi-tab browsing? I'm thinking like if a user is signed in and he attempted to open a new tab of the webapp, he should see something like "Please use one tab" and all the features/hyperlinks/buttons are disabled.
Here's a screenshot of how I proved he was using multiple tabs. Notice that there are multiple logs of the same attempt # because the current implementation allows saving a study session and resuming later (this is the part that's exploited). The opening of multiple tabs searches for the most recent attempt session and continues from there. This is also the reason why most of the sessions don't have a duration value -- the user only finishes a study session for one tab (by clicking a button that ends the study session). The system cannot compute for the duration because the other sessions don't have an end timestamp.
-
This is what a single-tab user looks like:
This is more of an application misuse issue more than a bug.
You should add protection not only from multi tab, but for multi browsers aw well, so it can't be purely FrontEnd check.
One of the solutions could be using ActionCable to check if a user has an active connection already and then act accordingly.
Another, for example, generate a GUID in JS and pass it with every answer. If its different from previous answer, it means user opened a new window.
But of course the solution would depend on your current architecture, without knowing how do you currently organise client-server communication it's hard to give exact and optimal solution.
I found an answer here. I just placed this js in the application view to prevent any extra instance of the website.
Thanks for everyone who pitched in.
The latest version of the Microsoft Edge browser (41.162...) requests a new page when the back and forward buttons are clicked. I've tested multiple browsers on multiple platforms and only Edge exhibits this behavior.
Here's a test page that displays the timestamp the page was created. Click the "Next Page" link and then use the back and forward buttons. Notice that the timestamp is different each time for Edge but not other browsers.
The previous version of Edge did not request a new page each time.
I don't think StackOverflow is the best place to post this as there won't be an easy workaround for this beside circumventing most of the browser internals via your own UI & cacheing and that can be broken by the user clicking the back button that they're accustomed to. I recommend filing a bug on Edge here: http://bugs.microsoftedge.com to find out if it's by design or not and potentially get it fixed. Additionally, please make sure to state why this is impactful to your site and more importantly to your end users.
One reason I can see fetching the URL again is that the content will be fresh because not every user wants to go back to "stale" content they just want to go back to that page, for example - and doing a new navigate ensures a clean slate.
I have a social network for gamers. It is in Rails 4 and uses PG. How can I add an "app" to it that changes the same site, and turns it into a site for movie enthusiasts, and most importantly lets users toggle back and forth?
gameexample.com would have a certain navbar. If you wanted, you could also "install" the movieexample app. movieexample app changes the navbar menu of the site, but keeps your other info, such as past messages, profile, interests, etc. Since many social networks share these basic things, why change? And changing "apps" would be seamless. You just click the button/icon. Some menu items are different, and your profile options and other people's profiles now emphasize different things (instead of gaming, now it's movies you want to watch, have seen, want to make, etc.)
You could access either site by it's own URL, but they would share the same DB. No having to sign up or in to a totally diff site. And the DB saves all your messaging, friends, etc across both sites.
I am using Rails 4.0.5 and PG 9.x. Also Bootstrap 3.
What is the most efficient way to have a site link so closely to another? Even if movieexample.com goes to movies.gamingexample.com, that's fine. But preferably not. More importantly though, how do I get the menu and everything to "scope" to each site? My best guess is to do
if [from movieexample.com]
then display [movie stuff]
else
[display gamingstuff]
Is that a reasonable way, or are there better ones? There is a link on each site back to the other.
Yes, you can use templates based on your domains, but it's too long to explain. Start using this guide:
http://www.justinball.com/2011/09/27/customizing-views-for-a-multi-tenant-application-using-ruby-on-rails-custom-resolvers/
We are looking at setting up an internal web application (ASP.NET MVC) as a kiosk for the employees that don't have a dedicated computer. We currently do not have this kiosk setup. Each employee will have their own login to look at some basic payroll information and request leaves of absence. This same web application will be used by the office workers with a dedicated PC at their desk.
I am going to go out on a limb and say that no matter how many times we tell the employees, the employees will not click log off when they walk away from the kiosk. What would you do to help prevent this from happening?
lets try to fix the users instead of the code :) , i guess that your log out button is like the one here on stackoverflow. its a little text link "logout" some where in the upper right corner. thats perfect for people who use webapps day by day and are aware of the fact that they need to logout before someone comes along a does havoc to thier facebook profile, but less tech savy users wont think of that and walk away.
you need to the get the attention of your users to this logout-button and teach them that logging-out is a good thing.
try the following
give the logout button more visual weight then usally make it bigger, make it a real button instead of a textlink and even change its color to something more alerting (red, orange, ... whatever fits your ci)
if they dont loggout, use the session timeout and some javascript the refresh the page after any amount of inactivity, but also set a flag that this user has not logged out after his last visit. that way you can greet him on his next login with a nice confirmation dialog, and tell him once again why logging out is so important and where your logout-button is located.
The naive solution would be to enforce a timeout. If there's no activity from the user within a certain time limit (say, a minute or so), log them out. Of course, this won't prevent someone from walking up immediately after an employee is done and seeing how much money they make.
ATMs handle this, I think, by timing out after a minute or two, which isn't super-secure but at least offers some minimal security.
If the employees have any kind of RFID card or other security token, you could require them to put it in a reader slot, and log them out whenever the card disappears. Handling this within a web app, though, could get complicated.
The simple way is to use a little javascript.
Just have it set to something like 30 seconds of inactivity. If the user hasn't clicked on anything have the javascript send it back to a login page.
Here's a link to get you started.
Assuming you've already thought of the obvious (aggressive session timeouts, non-persistent authentication cookies, etc); how about a bit of an "out there" suggestion?
I'm not sure how do-able this would be with a web-based interface; but what about using some form of IR sensor with a usb/serial interface and an API you can tie into? This may make it possible to invoke some form of "logout" operation when someone walks away from the kiosk.
Perhaps someone has a better suggestion for external hardware, but this was the first thing that lept to my mind as a out-of-the-box approach.
I found a jQuery version that seems to work quite well. I'll start by using that and see how that goes.
Simple question, spurred on by the removal of the target attribute in HTML 4.0 Strict and XHTML 1.0 Strict.
I personally don't think so, as web users become more savvy, they'll ask for a new window from the browser. It annoys me when a website does this a lot.
I think the question is sort of subjective. It could be good if you're launching a javascript game or something.
Here's Neil Turner's reasons not to do it.
On social content sites like Digg or reddit I prefer links to be opened in a new window/tab, as I am constantly going back to the original page to grab more links to look at.
That being said, I think that wherever you can you should allow a logged-in user to make the decision for themselves. I know Digg allows users to choose how they want links to behave.
I think this is pretty subjective, so I'll just give my opinion as a user. I prefer if it's just the default behavior. If I want it in a new tab, I'll middle-click.
If you're going to open it in a new window, warn me like this [new window] or something.
As a law, there is an exception to every law. Although in most cases simple links are best, sometimes links in a new window are just what is needed.
For example, I very much enjoy blogs and forums that open any external links in a new window, so I don't loose track of the original post I was reading.
Another good place to put them is when you click on a picture to get a larger version in an internet store or something.
You really have to evaluate this on a case-by-case basis, but my opinon is that in the end both are necessary for a good UI.
I do if it is an external link, other than that it is probably a bad idea.
The only time I force a new window is when the page I'm designing is ment to be used as a Web Part for a Sharepoint site.
I look at it this way, if you force a new window, you have taken choice away from the user. That's bad.
With two exceptions, the answer must be a resounding "no".
Rationale: Yes, as others have already pointed out there are many cases where I prefer to have a link opened in another tab. But thanks, I'll make the determination of when and which myself. The basic tenet of the web is that the user is sitting with a user agent, a.k.a. web browser. The browser is in other words an agent on behalf of the user. If I'll want a particular link opened in another tab, I'll command-click (or ctrl-clik on another OS), and if I don't, then I'll click regularly. When a link on a web page opens the link in a new tab without my asking, it annoys me no end and breaks the predictability and familiarity of the web.
Exception 1: When clicking to see a large version of a picture or some other plain pop-up window. I see this as a separate topic.
Exception 2: Fully Ajaxy web applications, which seem to set aside most of the rules of the web anyway.
Yes, in web apps it sometimes makes sense to use a popup window when pulling up something ancillary that you need to look at without losing the content on the page.
For instance, I have used popups to display reports. In those cases (which are situational), users needed to look at the report and the screen at the same time, not navigate away to a reporting interface.