window.location doesn't seem to work

Discussion in 'Javascript' started by menkaur, Nov 28, 2009.

  1. menkaur

    menkaur Guest

    Hey, guys!

    I'm new to javascript, and i've got a problem with one of the simple
    functions.

    I am trying to redirect a user after he presses a button. Here is the
    code:
    <form method="post"
    name="form2"
    action="">
    <center>
    <label><input id="getRecomendation"
    value="Get my recomendation"
    type="submit"
    name="getRecomendation"
    onclick="giveRecomendation()">
    <script type="text/javascript">
    function giveRecomendation()
    {
    window.location = "foo.html";
    //alert(window.location);
    }

    the page is run in Firefox from local hard drive.
    if alert(window.location) is uncommented, everything works just fine.
    but if i comment it, nothing happens.

    what's wrong?
     
    menkaur, Nov 28, 2009
    #1
    1. Advertising

  2. menkaur

    David Mark Guest

    On Nov 28, 5:24 am, menkaur <> wrote:
    > Hey, guys!
    >
    > I'm new to javascript, and i've got a problem with one of the simple
    > functions.
    >
    > I am trying to redirect a user after he presses a button. Here is the
    > code:
    > <form method="post"
    >       name="form2"
    >       action="">
    >     <center>


    Lose that (all of it).

    >         <label><input id="getRecomendation"


    Validate your markup.

    >                value="Get my recomendation"
    >                type="submit"


    type="button"

    >                name="getRecomendation"
    >                onclick="giveRecomendation()">
    > <script type="text/javascript">
    >   function giveRecomendation()
    >   {
    >       window.location = "foo.html";


    window.location.href = "foo.html";

    >       //alert(window.location);


    //window.alert(window.location.href);

    >
    > }
    >


    But this button won't work without scripting (and why are you using a
    button for a link anyway?) Good way to lose out on recommendations
    from people who can't/won't enable JS on the Internet. You could use
    a form and a submit button, but you would need to set the action to
    foo.html. That wouldn't require any script, but neither would a
    standard link.
     
    David Mark, Nov 28, 2009
    #2
    1. Advertising

  3. menkaur

    menkaur Guest

    On Nov 28, 1:02 pm, David Mark <> wrote:
    > On Nov 28, 5:24 am, menkaur <> wrote:
    >
    > > Hey, guys!

    >
    > > I'm new to javascript, and i've got a problem with one of the simple
    > > functions.

    >
    > > I am trying to redirect a user after he presses a button. Here is the
    > > code:
    > > <form method="post"
    > >       name="form2"
    > >       action="">
    > >     <center>

    >
    > Lose that (all of it).
    >
    > >         <label><input id="getRecomendation"

    >
    > Validate your markup.
    >
    > >                value="Get my recomendation"
    > >                type="submit"

    >
    > type="button"
    >
    > >                name="getRecomendation"
    > >                onclick="giveRecomendation()">
    > > <script type="text/javascript">
    > >   function giveRecomendation()
    > >   {
    > >       window.location = "foo.html";

    >
    > window.location.href = "foo.html";
    >
    > >       //alert(window.location);

    >
    > //window.alert(window.location.href);
    >
    >
    >
    > > }

    >
    > But this button won't work without scripting (and why are you using a
    > button for a link anyway?)  Good way to lose out on recommendations
    > from people who can't/won't enable JS on the Internet.  You could use
    > a form and a submit button, but you would need to set the action to
    > foo.html.  That wouldn't require any script, but neither would a
    > standard link.


    I'm using a button, because i'd like the customer to select options,
    and, based on selected options redirect the customer to an appropriate
    page.
     
    menkaur, Nov 28, 2009
    #3
  4. Because internal setter of window.location will be execute
    asynchronously, maybe in different thread. See the example:

    window.location.href = 'http://google.com';
    var arr = [];
    for (var i = 0; i < 10; i++)
    {
    arr = i;
    }
    window.alert(arr);

    Unfortunately, I don't see any documentation about that behavior of
    window.location to read what exactly happens in internal setter of
    window.location.

    In your case, you should need to prevent default action of submit
    button. Because, before created HTTP request from internal setter of
    window.location, will be make HTTP/POST request to URL from action
    attribute of form object.
     
    Asen Bozhilov, Nov 28, 2009
    #4
  5. menkaur

    David Mark Guest

    On Nov 28, 6:07 am, menkaur <> wrote:
    > On Nov 28, 1:02 pm, David Mark <> wrote:
    >
    >
    >
    > > On Nov 28, 5:24 am, menkaur <> wrote:

    >
    > > > Hey, guys!

    >
    > > > I'm new to javascript, and i've got a problem with one of the simple
    > > > functions.

    >
    > > > I am trying to redirect a user after he presses a button. Here is the
    > > > code:
    > > > <form method="post"
    > > >       name="form2"
    > > >       action="">
    > > >     <center>

    >
    > > Lose that (all of it).

    >
    > > >         <label><input id="getRecomendation"

    >
    > > Validate your markup.

    >
    > > >                value="Get my recomendation"
    > > >                type="submit"

    >
    > > type="button"

    >
    > > >                name="getRecomendation"
    > > >                onclick="giveRecomendation()">
    > > > <script type="text/javascript">
    > > >   function giveRecomendation()
    > > >   {
    > > >       window.location = "foo.html";

    >
    > > window.location.href = "foo.html";

    >
    > > >       //alert(window.location);

    >
    > > //window.alert(window.location.href);

    >
    > > > }

    >
    > > But this button won't work without scripting (and why are you using a
    > > button for a link anyway?)  Good way to lose out on recommendations
    > > from people who can't/won't enable JS on the Internet.  You could use
    > > a form and a submit button, but you would need to set the action to
    > > foo.html.  That wouldn't require any script, but neither would a
    > > standard link.

    >
    > I'm using a button, because i'd like the customer to select options,
    > and, based on selected options redirect the customer to an appropriate
    > page.


    You should use a form and do the redirect on the server. No JS
    necessary.
     
    David Mark, Nov 28, 2009
    #5
  6. David Mark wrote:

    > menkaur wrote:
    >> <label><input id="getRecomendation"

    >
    > Validate your markup.


    ACK, but this line is not invalid. <http://validator.w3.org/>

    >> window.location = "foo.html";

    >
    > window.location.href = "foo.html";


    There is no inherent advantage in using `.location.href' over `.location'.
    In fact, by contrast the `href' property of Location instances is tainted,
    and so subject to the SOP (that does not matter here).


    PointedEars
    --
    Use any version of Microsoft Frontpage to create your site.
    (This won't prevent people from viewing your source, but no one
    will want to steal it.)
    -- from <http://www.vortex-webdesign.com/help/hidesource.htm> (404-comp.)
     
    Thomas 'PointedEars' Lahn, Nov 28, 2009
    #6
  7. Asen Bozhilov wrote:

    > Unfortunately, I don't see any documentation about that behavior of
    > window.location to read what exactly happens in internal setter of
    > window.location.


    <http://docs.sun.com/source/816-6408-10/window.htm#1202507>
    <http://docs.sun.com/source/816-6408-10/location.htm#1193137>

    > In your case, you should need to prevent default action of submit
    > button.


    No, the `submit' event of the form should be cancelled instead. Or a submit
    button should not be used in the first place, or scripting should not be
    used in the first place.


    PointedEars
    --
    Use any version of Microsoft Frontpage to create your site.
    (This won't prevent people from viewing your source, but no one
    will want to steal it.)
    -- from <http://www.vortex-webdesign.com/help/hidesource.htm> (404-comp.)
     
    Thomas 'PointedEars' Lahn, Nov 28, 2009
    #7
  8. Thomas 'PointedEars' Lahn wrote:

    > <http://docs.sun.com/source/816-6408-10/window.htm#1202507>
    > <http://docs.sun.com/source/816-6408-10/location.htm#1193137>


    Thanks for the links. They contains much more information from MDC,
    but again i don't see any explanations about, how internal setter of
    window.location works.

    > No, the `submit' event of the form should be cancelled instead.  

    Yes, yes, yes. Apologize for my terminology here.

    Nice to see, your correction again. Sometimes you are make ironical
    comment, but when you corrected my, i learn properly terminology.
    Thanks.
     
    Asen Bozhilov, Nov 28, 2009
    #8
  9. Asen Bozhilov wrote:

    > Thomas 'PointedEars' Lahn wrote:
    >> <http://docs.sun.com/source/816-6408-10/window.htm#1202507>
    >> <http://docs.sun.com/source/816-6408-10/location.htm#1193137>

    >
    > Thanks for the links. They contains much more information from MDC,
    > but again i don't see any explanations about, how internal setter of
    > window.location works.


    ,-<http://docs.sun.com/source/816-6408-10/location.htm>
    |
    | Description
    | [...]
    | If you assign a string to the location property of an object, JavaScript
    | creates a location object and assigns that string to its href property.

    See also <http://docs.sun.com/source/816-6408-10/location.htm#1193550>:

    | Description
    |
    | [...]
    | Omitting a property name from the location object is equivalent to
    | specifying location.href. [...]

    RTSL of the respective DOM implementation, if available, for details.

    >> No, the `submit' event of the form should be cancelled instead.

    > Yes, yes, yes. Apologize for my terminology here.
    >
    > Nice to see, your correction again. Sometimes you are make ironical
    > comment, but when you corrected my, i learn properly terminology.


    It is not merely a matter of terminology here, though.

    Preventing the default action of (or cancelling) the `click' event of the
    submit button means, in a nutshell:

    <input type="submit" ... onclick="return false">

    Cancelling (or preventing the default action of) the `submit' event of the
    form means, in a nutshell

    <form ... onsubmit="return false">

    The former approach is known to be error-prone and harder to maintain.

    > Thanks.


    You are welcome.


    PointedEars
    --
    var bugRiddenCrashPronePieceOfJunk = (
    navigator.userAgent.indexOf('MSIE 5') != -1
    && navigator.userAgent.indexOf('Mac') != -1
    ) // Plone, register_function.js:16
     
    Thomas 'PointedEars' Lahn, Nov 28, 2009
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Leon
    Replies:
    1
    Views:
    10,202
    Boban Dragojlovic
    Jun 24, 2003
  2. Bill Green

    &nbsp; in a ListItem doesn't seem to work

    Bill Green, Feb 6, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    422
    vMike
    Feb 7, 2004
  3. Replies:
    1
    Views:
    395
  4. Tilman
    Replies:
    0
    Views:
    418
    Tilman
    Mar 19, 2008
  5. COHENMARVIN

    location.href doesn't seem to work

    COHENMARVIN, Oct 11, 2005, in forum: Javascript
    Replies:
    2
    Views:
    145
    Gérard Talbot
    Oct 12, 2005
Loading...

Share This Page