我们有一个名为“move”的JavaScript函数,它只执行“windows.location.href = 任何给定的锚”。
此功能适用于IE,Opera和Safari,但在Firefox中会被忽略。研究Google并没有产生令人满意的答案为什么它不起作用。
是否有任何JavaScript专家知道这种行为,以及通过JavaScript跳转到锚点的最佳做法是什么?
答案 0 :(得分:34)
您是否尝试过使用
window.location = 'url';
在某些浏览器中,window.location.href
是只读属性,并不是设置位置的最佳方式(即使技术上应该允许您这样做)。如果您自己使用location
属性,那么应该在所有浏览器中为您重定向。
Mozilla的文档详细解释了如何使用window.location
对象。
答案 1 :(得分:18)
如果您尝试在接下来回调的事件后调用此javascript代码,则必须在函数中添加另一行:
function JSNavSomewhere()
{
window.location.href = myUrl;
return false;
}
在页面的标记中,单击时调用此函数的控件必须返回此函数的值
<asp:button ........ onclick="return JSNavSomewhere();" />
false返回值将取消回调,现在重定向将起作用。为什么这在IE中有效?好吧,我猜他们在回调优先重定向时优先考虑问题。
希望这有帮助!
答案 2 :(得分:5)
在这种情况下确保一个观察
以下内容适用于IE
,但Chrome
和Firefox
(我测试的版本)
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)浏览器中使用。
window.location.assign("link to next page")
&#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 ="..."