Is it possible with JavaScript to change the browser's URL, but not leave the page?
相关问题
- Is there a limit to how many levels you can nest i
- How to toggle on Order in ReactJS
- void before promise syntax
- Keeping track of variable instances
- Can php detect if javascript is on or not?
In older browsers, you can not change the url in the address bar without leaving the page. But you can change the hash portion of the url without leaving the page. That is to say you can change
www.example.com
towww.example.com#new_text
with JavaScriptwindow.location.hash = "new_text"
; everything after the#
can be changed.However, in HTML5 there is a new History API which allows you to change the part of the URL after the domain. So you still cannot change
www.example.com
towww.BankOfAmerica.com
(for security reasons), but you can changewww.example.com/foo
towww.example.com/bar
.Check When can I use... to see which browsers support HTML5 session history management and support the new
pushState
method.In addition there is a JavaScript library which will normalizes the history API across browsers and changes the URL in new browsers and uses the hash portion for old browsers. See history.js .
No, it's not possible. And, whenever it is possible, that is a browser bug (I know about previous security bugs related to this behavior, and they were fixed in past).
Actually... You can change the last portion of the URL, anything after the
#
character. But the hostname and path can't be changed without leaving the page.You can change anything after the hash mark (
#
) as this is frequently used in Ajax applications such as Google search and the new Twitter. (That's why everything appears after the hash mark in those apps.) But if you change anything else, the page will have to be reloaded.I'm going to assume you are talking about the visible URL in the URL bar.
The answer is No, it is a major security vulnerability when an application tries trick users into thinking that are at another site.