julio.g
julio.g

Reputation: 3320

windows.location.href not working on Firefox3

We have a JavaScript function named "move" which does just "windows.location.href = any given anchor".
This function works on IE, Opera and Safari, but somehow is ignored in Firefox. Researching on Google doesn't produce a satisfactory answer why it doesn't work.
Does any JavaScript guru knows about this behavior, and what would be the best practice to jump to an anchor via JavaScript?

Upvotes: 21

Views: 89059

Answers (16)

sprite
sprite

Reputation: 3752

If you are trying to call this javascript code after an event that is followed by a callback then you must add another line to your function:

function JSNavSomewhere()
{
    window.location.href = myUrl;
    return false;
}

in your markup for the page, the control that calls this function on click must return this function's value

<asp:button ........ onclick="return JSNavSomewhere();" />

The false return value will cancel the callback and the redirection will now work. Why this works in IE? Well I guess they were thinking differently on the issue when they prioritized the redirection over the callback.

Hope this helps!

Upvotes: 19

VIKAS
VIKAS

Reputation: 61

window.location.assign("link to next page") should work in both (chrome and firefox) browsers.

window.location.assign("link to next page")

Upvotes: 0

LCJ
LCJ

Reputation: 22662

One observation to ensure in such a scenario

Following will work in IE, but neither in Chrome nor in Firefox (the versions I tested)

 window.location.href("http://stackoverflow.com");

Following will work all the three

window.location.href = "http://stackoverflow.com";

Upvotes: 5

Awal Istirdja
Awal Istirdja

Reputation: 47

I just overcome the same problem. and the problem is not in javascript, but the href attribute on the <a> element.

my js code

function sebelum_hapus()
{
var setuju = confirm ("Anda akan menghapus data...")
if (setuju)
window.location = "index.php";
}

my previous html was

<a href="" onClick="sebelum_hapus();">Klik here</a>

and I update it to

<a href="#" onClick="sebelum_hapus();">Klik here</a>

or remove the href attribute

hope this helps.

Upvotes: 0

Tom Tom
Tom Tom

Reputation: 3698

For reference I had the same problem.

onclick = "javascript: window.location('example.html');" didn't work under FF (latest)

I just had to rewrite to onclick = "javascript: window.location = 'example.html';" to get it working

Upvotes: 0

Dan Herbert
Dan Herbert

Reputation: 103457

Have you tried just using

window.location = 'url';

In some browsers, window.location.href is a read-only property and is not the best way to set the location (even though technically it should allow you to). If you use the location property on its own, that should redirect for you in all browsers.

Mozilla's documentation has a pretty detailed explanation of how to use the window.location object.

https://developer.mozilla.org/en/DOM/window.location

Upvotes: 36

Almost
Almost

Reputation:

window.location.hash = "#gallery";

Upvotes: 0

user299580
user299580

Reputation:

You've got to add return false; after the window.location.href as mentioned above.

function thisWorks()
{
    window.location.href = "http://www.google.com";
    return false;
}

function thisDoesNotWork()
{
    window.location.href = "http://www.google.com";
}

Upvotes: 2

Ketan Mayangar
Ketan Mayangar

Reputation: 1

please add full javascript script tag

<script type="text/javascript" language="javascript"></script>

Upvotes: 0

graffic
graffic

Reputation: 1412

I have the same problem and I guess this is related to a click event.

I have a function that moves the browser to a specific page. I attach that function to some click events: in a button and in a image. AlsoI execute the function when the user press escape (document onkeypress event).

The results are that in all cases the function is called and executed, but only when there is a click the browser goes to the address I want.

Update I got it working! with a

setTimeout( "location.replace('whatever.html');", 0 );

I don't know why the location.replace wasn't working when the event was a keypress, but with the settimeout it works :)

Update Returning false after the event when you press escape makes the redirection works. If you return true or nothing the browser will not follow

Upvotes: 2

serg
serg

Reputation: 111305

Another option:

document.location.href ="..."

Upvotes: -2

PhiLho
PhiLho

Reputation: 41152

I am not sure to follow you.
I just tried: going with FF3 to Lua 5.1 Reference Manual (long and with lot of anchors).
Pasting javascript:window.location.href="#2.5"; alert(window.location.href); in the address bar, I went to the right anchor and it displayed the right URL. Works also with a full URL, of course.
Alternative code: javascript:(function () { window.location.href="#2.5"; })();

Perhaps you forgot the #. Common problem, also with image maps.

Upvotes: 2

vincent
vincent

Reputation: 6608

Maybe it's just a typo in your post and not in your code, but it's window and not windows

Upvotes: 4

Mr. Muskrat
Mr. Muskrat

Reputation: 23683

Have you tried this?

Response.Write("<script type='text/javaScript'> window.location = '#myAnchor'; </script>";); 

Upvotes: 0

scunliffe
scunliffe

Reputation: 63588

window.location.href works fine in all versions of Firefox, as does document.location.href I think that there is something else in your code that is breaking things.

drop this in a blank page, if it works, it indicates there is something else wrong on your page.

<script>
  window.location.href = 'http://www.google.com/';
</script>

Upvotes: 1

VonC
VonC

Reputation: 1325437

You could also use window.location.replace to jump to an anchor without register it in the browser history:

This article illustrates how to jump to an anchor and uses href as read-only property.

function navigateNext() 
{
    if (!window.location.hash) 
    {
        window.location.replace(window.location.href + unescape("#2"))
    } 
    else 
    {
        newItem = nextItem(window.location.hash)
        if (document.getElementById(newItem)) 
        {
            window.location.replace(stripHash(window.location) + "#" + newItem)
        } 
        else 
        {
            window.location.replace(stripHash(window.location) + "#1")
        }
    }
}

Upvotes: 0

Related Questions