Reputation: 3320
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
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
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
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
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
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
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
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
Reputation: 1
please add full javascript script tag
<script type="text/javascript" language="javascript"></script>
Upvotes: 0
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
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
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
Reputation: 23683
Have you tried this?
Response.Write("<script type='text/javaScript'> window.location = '#myAnchor'; </script>";);
Upvotes: 0
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
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