Javascript window.location.replace()无法重定向浏览器
我使用页面进行导航,但此代码不起作用,有什么问题吗Javascript window.location.replace()无法重定向浏览器,javascript,jquery,redirect,replace,location,Javascript,Jquery,Redirect,Replace,Location,我使用页面进行导航,但此代码不起作用,有什么问题吗 <script> $(document).ready(function() { $("body").keydown(function(event) { if(event.keyCode == 37) { // left window.location.replace("http://newsii.abudayah.com/photo/2)"; } else if(event.keyCode == 39) { //
<script>
$(document).ready(function() {
$("body").keydown(function(event) {
if(event.keyCode == 37) { // left
window.location.replace("http://newsii.abudayah.com/photo/2)"; }
else if(event.keyCode == 39) { // right
window.location.replace("http://newsii.abudayah.com/photo/31)"; }
});
});
</script>
$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
window.location.replace(“http://newsii.abudayah.com/photo/2)"; }
如果(event.keyCode==39){//right
window.location.replace(“http://newsii.abudayah.com/photo/31)"; }
});
});
不要使用.replace()
为此,直接赋值即可
我用了这个,它的工作
$(document).ready(function () {
$(document).keydown(function(e) {
var url = false;
if (e.which == 37) { // Left arrow key code
url = $('.prev').attr('href');
}
else if (e.which == 39) { // Right arrow key code
url = $('.next').attr('href');
}
if (url) {
window.location = url;
}
});
});
您的代码有语法错误。结束括号在引号内,而不是在引号外 尝试:
$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
window.location.replace(“http://newsii.abudayah.com/photo/2"); }
如果(event.keyCode==39){//right
window.location.replace(“http://newsii.abudayah.com/photo/31"); }
});
});
并非所有浏览器都支持window.location.replace。始终支持指定位置值。但是,使用替换而不是指定位置值的原因是您不希望当前url出现在历史记录中,或者在使用“后退”按钮时显示。因为这并不总是可能的,所以您只需要满足于可能的事情:
<script>
$(document).ready(function() {
$("body").keydown(function(event) {
if(event.keyCode == 37) { // left
try { window.location.replace("http://newsii.abudayah.com/photo/2"); }
catch(e) { window.location = "http://newsii.abudayah.com/photo/2"; }
}
else if(event.keyCode == 39) { // right
try { window.location.replace("http://newsii.abudayah.com/photo/31"); }
catch(e) { window.location = "http://newsii.abudayah.com/photo/31"; }
}
});
});
</script>
$(文档).ready(函数(){
$(“body”).keydown(函数(事件){
如果(event.keyCode==37){//left
请尝试{window.location.replace(“http://newsii.abudayah.com/photo/2"); }
catch(e){window.location=”http://newsii.abudayah.com/photo/2"; }
}
如果(event.keyCode==39){//right
请尝试{window.location.replace(“http://newsii.abudayah.com/photo/31"); }
catch(e){window.location=”http://newsii.abudayah.com/photo/31"; }
}
});
});
在Chrome中重新加载同一页面时,我发现它无法工作。执行以下操作有效:
window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page
window.location.replace("/mypage.aspx?type=abc"); //redirect to same page
这是一个有点黑客,但这似乎是唯一的事情,迫使重新加载在同一页上的铬。IE和FF在没有重定向到假页面的情况下工作。我在Chrome中遇到了问题。我试图从同一个域加载另一个页面,但使用的是绝对URL(例如
www.example.com/newurl
)。我将其更改为相对URL(/newurl
),现在可以使用了
我的想法是,这是一种安全功能,可以防止用户通过一些javascript广告被重定向到恶意网站。使用以下方式:
window.history.pushState("", "", "new url");
window.location.reload();
我必须说,一个有JSFIDLE的答案必须是没有JSFIDLE的答案的10倍。同意。。。只要我感觉不到讽刺,有机会知道原因吗?
replace()
或assign()
有什么不好?@green-location.assign()
实际上与设置location.href
(与直接设置location
相同)。每一项都会向浏览器历史记录中添加一个新条目(后退按钮等)location.replace()
有一个非常有效且不同的用例,它会更改页面url,但不会向浏览器历史记录中添加条目。请参阅。您无法直接访问窗口。位置
,因为它是只读属性。其中一个答案似乎注意到,每个URL中的括号都在引号内,而它需要在引号外。否则,replace方法的使用在语法上是正确的。IIUC这依赖于第一个重定向没有立即发生,所以第二行开始运行。但从理论上讲,如果第一个发生得很快,用户就会被假url卡住,并看到错误页面。这是一个很好的答案。这个后备方案真的很有用。
window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page
window.location.replace("/mypage.aspx?type=abc"); //redirect to same page
window.history.pushState("", "", "new url");
window.location.reload();