firefox和javascript重定向
我目前对firefox有一个问题,在firefox中,所有其他浏览器的行为都是正确的——即使是IE6 我想做的是重定向到子页面,但留下一个历史记录条目。据我所知,有两种重写url的方法:firefox和javascript重定向,javascript,jquery,firefox,history,Javascript,Jquery,Firefox,History,我目前对firefox有一个问题,在firefox中,所有其他浏览器的行为都是正确的——即使是IE6 我想做的是重定向到子页面,但留下一个历史记录条目。据我所知,有两种重写url的方法: window.location=“some.url”;-重定向到带有历史记录项的some.url window.location.replace(“some.url”);-无历史记录条目重定向 所以我必须使用第一个,并在firebug控制台中进行测试,一切正常 现在这个问题有一个奇怪的部分:在控制台中运行良
- window.location=“some.url”;-重定向到带有历史记录项的some.url
- window.location.replace(“some.url”);-无历史记录条目重定向
jQuery("#selector").bind("submit", function() {
$.getJSON("some_cool_json", function(response) {
var redirect_path = response.path;
window.location = redirect_path;
});
return false;
});
如果response\u path
设置正确,我检查了它!即使重定向工作正常,但没有创建历史记录条目
有什么想法吗?太好了!;)
干杯
乔使用:
替换(url)将当前文档替换为 一个位于提供的URL最新版本 与assign()方法的区别是 使用replace()后,当前 页面将不会保存在会话中 历史记录,表示用户不会 能够使用“后退”按钮 导航到它
如果这发生在我身上,我会尝试这样做:
jQuery("#selector").bind("submit", function() {
$.getJSON("some_cool_json", function(response) {
var redirect_path = response.path;
setTimeout(function() {
window.location.assign(redirect_path);
}, 1);
});
return false;
});
其思想是将“assign()”调用的执行放入“普通”事件处理程序中,以防“getJSON”响应函数的上下文有什么奇怪的地方。该函数(“getJSON”响应)将从执行刚刚添加到DOM中的
块的代码的浏览器上下文中调用,因此它至少有点不寻常
我不知道它会起作用;我还没有试过设置测试页面。嗨,伙计,谢谢你的回答,我忘了提到我试过
assign
,但效果不好+1assign()
比window.location=”更正确http://...“
,但这并不能解释为什么会发生这种情况。可能firefox在使用window.location=”“?”时使用了.replace()?!Pointy的解决方案正在发挥作用,但我将更新我的代码以使用assign
——这比=assign!更好!)听起来很奇怪,但就是这样!非常感谢。如果有一位jQuery专家来了解内部发生了什么,那将是一件有趣的事情!;)jQuery所做的是:在添加一个参数告诉JSON服务器要调用什么函数之后,它构建一个
标记,并将您的URL作为源。服务器返回一个类似于“functionName(/*…json block…*/)”的Javascript块。现在,当浏览器加载脚本时,脚本将运行,函数将被调用。jQuery为您构建该函数,它所做的只是调用传递给getJSON的回调。
jQuery("#selector").bind("submit", function() {
$.getJSON("some_cool_json", function(response) {
var redirect_path = response.path;
setTimeout(function() {
window.location.assign(redirect_path);
}, 1);
});
return false;
});