Everything in the HTML document belongs to you. JavaScript also gives you
the ability to manipulate some things in the browser itself, things that are
temporary properties of the window, and only a few things, as the browser
window really belongs to the user. The further away you get from the HTML
document itself, the less likely you are going to have control, and that is
a good thing. The HTML document is a guest on the user's computer. A good
guest doesn't try to rearrange the furniture in the host's home.
However, some guests are just plain rude. They are like door-to-door
salemen, who, when you try to close your front door, stick their foot in the
crack, to prevent you from doing so. The Internet is full of all kinds of
people, from the best to the worst. Porn sites have been among the worst
offenders, but other "sales" - type sites have followed suit, with pop-up
ads that open other pop-up ads, windows that hide themselves, etc., in
effect, trying to force the user to do something they do not want to, like a
bad guest. So, browser and Operating System manufacturers have been working
on ways of preventing these bad guests from rearranging your furniture
without your permission, while still enabling HTML documents to be helpful
and useful in as many ways as possible. This is a difficult task, as one
goal seems to run against the other, and both are equally desirable.
Now, here's where I'm going with this: The user has opened a browser window
on his/her computer, to browse the Internet. He/she may want to use that
same browser window to go somewhere else when he/she is through with your
web site. Now, there are JavaScript functions like window.open() and
window.close() that can be used by an HTML document to open a new browser
window (similar to a dialog box, or help window, for example), or close a
browser window that it has opened. In fact, the JavaScript window.close()
method used to be able to close the window which the user opened, and, in
some browsers, still can, with a bit of tweaking.
However, when designing a web site, or a web application (which is, to the
user, the same thing), one must be aware of these issues, and sensitive to
the user's desires, if one wants to generate traffic to one's web site, and
keep people coming back. In other words, one must be a good guest in order
to be invited back.
Among the changes that have been made are changes to the window.close()
method. A window that has been opened by an HTML document using the
JavaScript window.close() method can close itself, with no problems. It can
also be closed by the window that opened it. But a window that the user has
opened may or may not be able to close itself. In most cases, the browser
will prompt the user first, ask permission to close the window, like a good
guest.
Now, there is a workaround for this, as with most programming technologies.
How does the browser know who opened it? It has a public property called
"opener" which is a browser window. When the user opens the window, the
opener is null. When an HTML document opens a window, the opener is the
window that opened it. So, you can usually set the "opener" property to the
current window, and this will fool (at least) most browsers. Example:
window.opener = self;
window.close();
However, I would not be surprised if, at some near point in the future, this
property was made read-only by browser manufacturers, as they are aware of
this trick, and I can't think of a single reason why it should be settable,
except by the browser software, other than to spoof the browser as I have
illustrated above.
Now, the reason I've gone into all of this is that, when designing a web
application, one should be sensitive to the needs and desires of the user.
Otherwise, one will not have very many users. So, a good rule of thumb is,
be a good guest. Don't try to mess too much with the user's browser. Use
what you know wisely, and don't abuse your power!
--
HTH,
Kevin Spencer
Microsoft MVP
..Net Developer
Everybody picks their nose,
But some people are better at hiding it.