windows.location.href无法在Firefox3上运行

时间:2008-11-08 19:39:21

标签: javascript firefox

我们有一个名为“move”的JavaScript函数,它只执行“windows.location.href = 任何给定的锚”。
此功能适用于IE,Opera和Safari,但在Firefox中会被忽略。研究Google并没有产生令人满意的答案为什么它不起作用。
是否有任何JavaScript专家知道这种行为,以及通过JavaScript跳转到锚点的最佳做法是什么?

17 个答案:

答案 0 :(得分:34)

您是否尝试过使用

window.location = 'url';

在某些浏览器中,window.location.href是只读属性,并不是设置位置的最佳方式(即使技术上应该允许您这样做)。如果您自己使用location属性,那么应该在所有浏览器中为您重定向。

Mozilla的文档详细解释了如何使用window.location对象。

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

答案 1 :(得分:18)

如果您尝试在接下来回调的事件后调用此javascript代码,则必须在函数中添加另一行:

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

在页面的标记中,单击时调用此函数的控件必须返回此函数的值

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

false返回值将取消回调,现在重定向将起作用。为什么这在IE中有效?好吧,我猜他们在回调优先重定向时优先考虑问题。

希望这有帮助!

答案 2 :(得分:5)

在这种情况下确保一个观察

以下内容适用于IE,但ChromeFirefox(我测试的版本)

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

以下将全部工作

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

答案 3 :(得分:4)

也许这只是你帖子中的错字而不是你的代码,但它是窗口而不是窗口 s

答案 4 :(得分:2)

我不一定会关注你。
我只是尝试过:用FF3去Lua 5.1 Reference Manual(很长很多锚) 在地址栏中粘贴javascript:window.location.href="#2.5"; alert(window.location.href);,我转到右边的锚点,它显示正确的URL。当然也可以使用完整的URL 替代代码:javascript:(function () { window.location.href="#2.5"; })();

也许你忘记了#。常见问题,也有图像地图。

答案 5 :(得分:2)

我遇到了同样的问题,我猜这与点击事件有关。

我有一个将浏览器移动到特定页面的功能。我将该功能附加到某些点击事件:在按钮和图像中。另外,当用户按下escape(文档onkeypress事件)时,我执行该功能。

结果是在所有情况下都会调用并执行该函数,但只有在单击时,浏览器才会转到我想要的地址。

<强>更新 我搞定了!用

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

我不知道为什么当事件是按键时location.replace不起作用,但是使用settimeout它可以工作:)

<强>更新 在按下escape后事件后返回false会使重定向生效。如果您返回true或什么也不返回浏览器

答案 6 :(得分:1)

window.location.href在所有版本的Firefox中都能正常工作,document.location.href也是如此。我认为您的代码中还有其他东西会破坏它。

将其放在空白页面中,如果有效,则表示您的网页上有其他错误。

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

答案 7 :(得分:1)

如果您使用 表单 发布数据,有时会发生这种情况。 如果您使用的是ajax,请尝试将“form”更改为“div”。 这将阻止表单的默认行为并执行您的ajax代码。

答案 8 :(得分:1)

如上所述,您必须在window.location.href之后添加 return false;

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

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

答案 9 :(得分:0)

window.location.assign(&#34;链接到下一页&#34;)应该可以在(chrome和firefox)浏览器中使用。

&#13;
&#13;
window.location.assign("link to next page")
&#13;
&#13;
&#13;

答案 10 :(得分:0)

我刚刚克服了同样的问题。问题不在于javascript,而是在<a>元素上的href属性。

我的js代码

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

我以前的HTML是

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

我将其更新为

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

或删除href属性

希望这会有所帮助。

答案 11 :(得分:0)

作为参考,我遇到了同样的问题。

onclick =“javascript:window.location('example.html');”在FF(最新)下没有工作

我只需要重写为onclick =“javascript:window.location ='example.html';”让它运作

答案 12 :(得分:0)

请添加完整的JavaScript脚本标记

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

答案 13 :(得分:0)

window.location.hash = "#gallery";

答案 14 :(得分:0)

你试过这个吗?

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

答案 15 :(得分:0)

您还可以使用window.location.replace跳转到锚点,而无需在浏览器历史记录中注册它:

这个article说明了如何跳转到锚点并使用href作为只读属性。

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")
        }
    }
}

答案 16 :(得分:-1)

另一种选择:

document.location.href ="..."