admin管理员组文章数量:1429434
I know how to use window.location. The problem is that, (at least in FF) it erases the page you are on from the history. e.g., I'm on page A, I navigate to B and window.location is used to send me to C. If on page C, I click back, I end up at A, not B.
Is there some other way to navigate to another page without erasing the current page from the history?
EDIT: This wont happen if you run the code in Firebug.
Here is a super simple page (yes I know the code is ugly, it's not the real code) that shows the problem:
<html>
<head><script type="text/javascript" src=".4.2.min.js"> </script>
<body>
<div class="foo"></div>
<a href="javascript:$('.foo').html('<scri'+'pt type="text/javascript">window.location = "c.html"</s'+'cript>');">b</a>
EDIT2: jQuery is the problem and setTimeout
is the answer. I've added my solution below just in case someone else runs into this weird edge case.
EDIT3: This example is simplified to make it easier to test. In the real case, the click handler makes an Ajax call that returns the HTML, so we can't simplify the whole thing by just writing window.location = whatever. The code es from the server, embedded in the HTML.
I know how to use window.location. The problem is that, (at least in FF) it erases the page you are on from the history. e.g., I'm on page A, I navigate to B and window.location is used to send me to C. If on page C, I click back, I end up at A, not B.
Is there some other way to navigate to another page without erasing the current page from the history?
EDIT: This wont happen if you run the code in Firebug.
Here is a super simple page (yes I know the code is ugly, it's not the real code) that shows the problem:
<html>
<head><script type="text/javascript" src="http://code.jquery./jquery-1.4.2.min.js"> </script>
<body>
<div class="foo"></div>
<a href="javascript:$('.foo').html('<scri'+'pt type="text/javascript">window.location = "c.html"</s'+'cript>');">b</a>
EDIT2: jQuery is the problem and setTimeout
is the answer. I've added my solution below just in case someone else runs into this weird edge case.
EDIT3: This example is simplified to make it easier to test. In the real case, the click handler makes an Ajax call that returns the HTML, so we can't simplify the whole thing by just writing window.location = whatever. The code es from the server, embedded in the HTML.
Share Improve this question edited Mar 6, 2010 at 3:25 munity wiki7 revs, 2 users 100%
noah 2
-
It would help if you posted the code you're using, e.g.
window.location = url
orwindow.location.replace(url)
– Patrick McElhaney Commented Feb 24, 2010 at 18:43 - I've tried both. Same result. – noah Commented Feb 24, 2010 at 20:20
5 Answers
Reset to default 3setTimeout
is the answer.
$(div).html('<script...> setTimeout(function() { window.location = url; },10); </script>');
Doesn't have this problem. It must have something to do with the way jQuery executes inline scripts (by creating a script
tag in the head
element).
You could use window.location.assign(URL)
.
I'm not seeing that behavior in Firefox 3.6. Following your example, from stackoverflow. I went to google., then from there I used the Firebug console window to set window.location = 'http://facebook.'. Once there, all three were in my browser history..
This is just a hack and I don't know if it will work. Try window.history.back(1)
after you have set the URL using window.location = URL;
Hope this helps.
Use location.href
instead of location.
本文标签:
版权声明:本文标题:jquery - JavaScript: Navigate to a new URL without replacing the current page in the history (not window.location) - Stack Overf 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745454799a2659052.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论