firefox和javascript重定向
我目前遇到了Firefox的一个问题,其中所有其他浏览器的行为都是正确的 - 甚至IE6!firefox和javascript重定向
我想要做的是重定向到一个子页面,但留下一个历史记录。据我所知,有两种重写url的方法:
- window.location =“some.url”; - 重定向到具有历史记录条目的some.url
- window.location.replace(“some.url”); - 重定向没有历史记录
所以我必须使用第一个,并在萤火虫控制台everthing测试工作正常。
现在有那种这一问题的奇特部分:相同的语句,在控制台运行良好并没有在一些jQuery的回调处理:
jQuery("#selector").bind("submit", function() {
$.getJSON("some_cool_json", function(response) {
var redirect_path = response.path;
window.location = redirect_path;
});
return false;
});
其中response_path
设置是否正确,我查它!即使重定向工作正常,但没有创建历史记录条目。
关于那个的任何想法?会很好! )
干杯
乔
如果这是发生在我身上,我想尝试的事情会是这样:
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;
});
的想法是把的“分配()”调用的执行变成了“正常“事件处理程序,以防万一有关”getJSON“响应函数的上下文很奇怪。该函数(“getJSON”响应)将从浏览器的上下文中调用,该浏览器执行刚刚添加到DOM中的<script>
块的代码,所以它至少有点不同寻常。
我不知道它会工作;我还没有尝试设置测试页。
使用assign():
window.location.assign("http://...");
替换(URL)
与 一个在提供的URL替换当前文档。 从分配()方法 区别是 ,使用替代()当前 页面不会被保存在会议 历史,这意味着用户以后将不会 能够使用后退按钮 导航到它。
嗨Henchman和感谢您的回答,我忘了提及我试过'assign',但它没有工作以及! – xijo 2010-03-08 12:25:48
+1'assign()'比'window.location =“http:// ...”'更正确,尽管这并不能解释为什么会发生这种情况。 – 2010-03-08 12:27:23
也许firefox使用.replace()时使用window.location =“”?! – 2010-03-08 12:45:20
听起来很奇怪,但那就是它!谢谢!将有趣的是有一个jQuery大师在线了解内部发生的事情! ;) – xijo 2010-03-08 14:34:48
jQuery做的是这样的:在添加一个参数告诉JSON服务器调用哪个函数之后,它会以您的URL为源生成一个'