Adicionar um fragmento ao URL sem causar um redirecionamento?

86

Existe uma maneira de adicionar hash # ao meu URL sem redirecionar?

Dee
fonte

Respostas:

170
window.location.hash = 'something';

Isso é simplesmente JavaScript.

Seu comentário...

Olá, o que eu preciso mesmo é adicionar apenas o hash ... algo assim: window.location.hash = '#';mas dessa forma nada é adicionado.

Experimente isso ...

window.location = '#';

Além disso, não se esqueça do window.location.replace()método.

alex
fonte
HI, o que eu realmente preciso é adicionar apenas hash ... algo assim: window.location.hash = '#'; mas desta forma nada é adicionado ..
Dee
27

Para HTML direto, sem a necessidade de JavaScript:

<a href="#something">Add '#something' to URL</a>

Ou, para levar sua pergunta mais literalmente, apenas adicionar '#' ao URL:

<a href="#">Add '#' to URL</a>
Jess Telford
fonte
incorreto, pois você precisa clicar no link para alterar o hash .. então está faltando a parte js onde você aciona o "clique" ..
Juan
@Juan Por que precisamos "acionar" um clique? A pergunta original acabou de perguntar como podemos adicionar o #ao URL. Na verdade, clicar em um link como sugeri irá cumprir isso. Nenhum JS necessário.
Jess Telford,
1
Sua resposta descreve como criar um link que, QUANDO clicado, adiciona um fragmento ao url. A questão pergunta como adicionar um fragmento. Portanto, sua resposta está faltando ação, ou seja, o "clique"
Juan,
2
Muito justo, posso ver a pergunta sendo interpretada dessa forma. Esperançosamente, alguém ainda achará esta opção útil para seu caso de uso.
Jess Telford,
6
window.location.hash = 'whatever';
Daniel Lo Nigro
fonte
5
O #prefixo não é obrigatório.
alex
@alex: Ah, eu não tinha certeza se era necessário ou não. window.location.hash retorna o hash com um prefixo #, então presumi que fosse. Obrigado pelo esclarecimento. :)
Daniel Lo Nigro
4
Não se preocupe - e isso faz você se perguntar por que ele sempre o retorna.
alex
0

Tente isto

var URL = "scratch.mit.edu/projects";
var mainURL = window.location.pathname;

if (mainURL == URL) {
    mainURL += ( mainURL.match( /[\?]/g ) ? '&' : '#' ) + '_bypasssharerestrictions_';
    console.log(mainURL)
}
Tladi Ramahata
fonte