O que significa “javascript: void (0)”?

login 

Já vi tantas href muitas vezes, mas não sei exatamente o que isso significa.

O operador void avalia a expressão dada e depois retorna undefined .

O operador void é freqüentemente usado apenas para obter o valor primitivo undefined , geralmente usando “ void(0) ” (que é equivalente a “ void 0 ”). Nestes casos, a variável global undefined pode ser usada no lugar (supondo que não tenha sido atribuído a um valor não padrão).

Uma explicação é fornecida aqui: operador void .

A razão pela qual você gostaria de fazer isso com o href de um link é que, normalmente, um javascript: URL redirectá o navegador para uma versão de texto simples do resultado da avaliação desse JavaScript. Mas se o resultado for undefined , o navegador permanece na mesma página. void(0) é apenas um script curto e simples que é avaliado como undefined .

Além da resposta técnica, javascript:void significa que o autor está fazendo errado.

Não há uma boa razão para usar um javascript: pseudo-URL (*). Na prática, isso causará confusão ou erros, caso alguém tente fazer coisas como ‘link de marcador’, ‘link aberto em uma nova guia’ e assim por diante. Isso acontece bastante agora que as pessoas se acostumaram a clicar no meio para uma nova guia: parece um link, você quer lê-lo em uma nova guia, mas não é um link real, e fornece resultados indesejados, como uma página em branco ou um erro de JS, quando clicados ao meio.

é uma alternativa comum que pode ser menos ruim. No entanto, você deve lembrar-se de return false do seu manipulador de events onclick para impedir que o link seja seguido e rolar até a parte superior da página.

Em alguns casos, pode haver um lugar realmente útil para apontar o link. Por exemplo, se você tem um controle em que você pode clicar e abrir um

oculto anteriormente, faz sentido usar para vinculá-lo. Ou se houver uma maneira não JavaScript de fazer a mesma coisa (por exemplo, ‘thispage.php? Show = foo’ que define foo visível para começar), você pode vincular a isso.

Caso contrário, se um link apontar apenas para algum script, ele não será realmente um link e não deverá ser marcado como tal. A abordagem usual seria adicionar o onclick a um ,

ou um sem um href e href -lo de alguma forma para deixar claro que você pode clicar nele. Isto é o que StackOverflow [fez no momento da escrita; agora usa href="#" ].

A desvantagem disso é que você perde o controle do teclado, já que você não pode tabular em um span / div / bare-a ou ativá-lo com espaço. Se isso é realmente uma desvantagem depende do tipo de ação que o elemento deve tomar. Você pode, com algum esforço, tentar imitar a interatividade do teclado, adicionando um tabIndex ao elemento e aguardando um pressionamento de tecla do Espaço. Mas nunca vai 100% reproduzir o comportamento real do navegador, até porque navegadores diferentes podem responder ao teclado de maneira diferente (para não mencionar os navegadores não-visuais).

Se você realmente quer um elemento que não é um link, mas que pode ser ativado normalmente pelo mouse ou teclado, o que você quer é um (ou é exatamente como bom, para conteúdos textuais simples). Você sempre pode usar o CSS para redimensioná-lo, de modo que ele se pareça mais com um link do que com um botão, se você quiser. Mas como se comporta como um botão, é assim que você deveria marcá-lo.

(*: na criação de sites, de qualquer forma. Obviamente, eles são úteis para bookmarklets. javascript: pseudo-URLs são uma bizarria conceitual: um localizador que não aponta para um local, mas chama código ativo dentro do local atual. Eles causaram grandes problemas de segurança para navegadores e aplicativos web, e nunca deveriam ter sido inventados pelo Netscape.)

Isso significa que não fará nada. É uma tentativa de fazer com que o link não “navegue” para qualquer lugar. Mas não é o caminho certo.

Você deve apenas return false no evento onclick , assim:

 hello 

Normalmente é usado se o link estiver fazendo alguma coisa ‘JavaScript-y’. Como postar um formulário AJAX ou trocar uma imagem ou o que for. Nesse caso, você apenas faz qualquer function que está sendo chamada return false .

Para tornar seu site completamente incrível, no entanto, geralmente você includeá um link que faz a mesma ação, se a pessoa que estiver navegando não escolher rodar o JavaScript.

 hello 

Há uma enorme diferença no comportamento de “#” vs javascript: void

“#” rola para o topo da página enquanto “javascript: void (0);” não.

Isso é muito importante se você estiver codificando páginas dinâmicas. o usuário não quer voltar ao topo só porque ele clicou em um link na página.

Ele é usado muito popularmente para adicionar funções JavaScript ao link HTML, por exemplo: o link [Print] que você vê em várias páginas da web. Código é como:

 Print 

Por que precisamos de 'href' enquanto 'onclick' sozinho pode fazer o trabalho? Porque se omitirmos o 'href' , quando os usuários passarem o mouse sobre o texto “Print”, o cursor mudará para “I”. Ter 'href' permite que o cursor seja exibido como se fosse um hiperlink: uma mão apontando.

PS: Existem dois methods: 1. href="javascript:void(0);" e 2. href="#" – ambos têm o mesmo efeito. Mas o primeiro exige que o JavaScript seja ativado no navegador da Web, enquanto o segundo não. Então, o segundo parece ser mais compatível.

Você deve sempre ter um href em suas tags. Chamar uma function JavaScript que retorne ‘indefinida’ funcionará bem. Então, vai ligar para ‘#’.

Tags de âncora no Internet Explorer 6 sem um href não obtêm o a:hover aplicado.

Sim, é terrível e um pequeno crime contra a humanidade, mas o mesmo acontece com o Internet Explorer 6 em geral.

Eu espero que isso ajude.

O Internet Explorer 6 é na verdade um grande crime contra a humanidade.

void é um operador usado para retornar um valor undefined para que o navegador não possa carregar uma nova página.

Os navegadores da Web tentarão usar o que for usado como URL e carregá-lo, a menos que seja uma function JavaScript que retorne null. Por exemplo, se clicarmos em um link como este:

 Click Me 

Em seguida, uma mensagem de alerta será exibida sem carregar uma nova página, porque o alert é uma function que retorna um valor nulo. Isso significa que, quando o navegador tenta carregar uma nova página, ela vê nulo e não tem nada para carregar.

Uma coisa importante a observar sobre o operador void é que ele requer um valor e não pode ser usado sozinho. Devemos usá-lo assim:

 I am a useless link 

O operador void avalia a expressão dada e depois retorna indefinida. Evita atualizar a página.

Vale a pena mencionar que, às vezes, você verá void 0 ao verificar undefined, simplesmente porque requer menos caracteres.

Por exemplo:

 something === undefined 

vs.

 something === void 0 

Alguns methods de minification substituem undefined por void 0 por esse motivo.

Uso de javascript:void(0) significa que o autor do HTML está usando indevidamente o elemento de âncora no lugar do elemento de botão.

As tags âncoras geralmente são abusadas com o evento onclick para criar pseudo-botões definindo href como “#” ou “javascript: void (0)” para evitar que a página seja atualizada. Esses valores causam um comportamento inesperado ao copiar / arrastar links, abrir links em novas guias / janelas, marcar favoritos e quando o JavaScript ainda está sendo baixado, com erros ou desativado. Isso também transmite semântica incorreta para tecnologias assistivas (por exemplo, leitores de canvas). Nestes casos, recomenda-se usar um vez disso. Em geral, você deve usar apenas uma âncora para navegação usando um URL adequado.

Fonte: Página do MDN .

Para entender este conceito, deve-se primeiro entender o operador void em JavaScript.

A syntax para o operador void é: void «expr» que avalia expr e retorna indefinido.

Se você implementar void como uma function, terá a seguinte aparência:

 function myVoid(expr) { return undefined; } 

Esse operador vazio tem um uso importante que é – descartando o resultado de uma expressão.

Em algumas situações, é importante retornar indefinido em oposição ao resultado de uma expressão. Então vazio pode ser usado para descartar esse resultado. Uma dessas situações envolve javascript: URLs, que devem ser evitadas para links, mas são úteis para bookmarklets. Quando você visita uma dessas URLs, muitos navegadores substituem o documento atual pelo resultado da avaliação do “conteúdo” das URLs, mas apenas se o resultado não for indefinido. Portanto, se você deseja abrir uma nova janela sem alterar o conteúdo exibido atualmente, faça o seguinte:

 javascript:void window.open("http://example.com/") 

Um link deve ter um destino HREF a ser especificado para permitir que ele seja um object de exibição utilizável.

A maioria dos navegadores não analisará JavaScript avançado em um

  

tag como:

  

porque a tag HREF na maioria dos navegadores não permite espaços em branco, ou converterá espaço em branco em% 20, o equivalente HEX de um ESPAÇO, o que torna seu JavaScript absolutamente inútil para o interpretador.

Portanto, se você quiser usar uma tag A HREF para executar JavaScript in-line, deverá especificar um valor válido para HREF FIRST que não seja muito complexo (não contenha espaços em branco) e forneça o JavaScript em uma tag de atributo de evento como OnClick , OnMouseOver, OnMouseOut, etc.

A resposta típica é fazer algo assim:

 Get the object 

Isso funciona bem, mas faz a página pular para o topo por causa do sinal de libra / hash diz para fazê-lo.

Apenas fornecer uma tag de sinal de libra / hash em uma tag A HREF realmente especifica a âncora de raiz, que é sempre, por padrão, a parte superior da página, você pode especificar um local diferente usando especificando o atributo NAME dentro de uma tag A HREF.

  

Você pode então mudar sua tag A HREF para pular para 'middleofpage' e executar o JavaScript no evento OnClick, assim que acontecer da seguinte forma:

 Get the object 

Haverá muitas vezes onde você não quer que o link pule, então você pode fazer duas coisas:

 Get the object 

Agora, não irá a lado nenhum quando clicado, mas poderá fazer com que a página se centralize novamente a partir da sua janela de visualização atual. Isso não é bonito. Qual é a melhor maneira de fornecer javascript in-line, usando um A HREF, mas sem ter que fazer nenhuma das opções acima? JavaScript: void (0);

 Get the object 

Isso diz ao navegador para ir em branco, mas em vez disso, executar o JavaScript válido: void (0); function primeiro na tag HREF porque ela não contém espaços em branco e não será analisada como uma URL. Em vez disso, ele será executado pelo compilador. VOID é uma palavra-chave que, quando fornecida com um medidor de 0, retorna UNDEFINED, que não usa mais resources para manipular um valor de retorno que ocorreria sem especificar 0 (é mais compatível com gerenciamento de memory / desempenho).

A próxima coisa que acontece é o OnClick é executado. A página não se move, nada acontece em termos de exibição.

JavaScript: URLs de lado; é aí que o vazio pode ser útil para escrever códigos mais curtos.

 var error1 = false, error2 = false, error3 = false; function error1() { error1 = true; } function myFunction() { // You can easily return and call a function at once, if you don't care about myFunction's return value if (!someCondition1) return error1(); // What if you want to set a value first? if (!someCondition2) { error2 = true; return } // Shortest way to return and set a value at once if (!someCondition3) return void(error3 = true); // More code goes here } 

Os desenvolvedores da Web usam javascript:void(0) porque é a maneira mais fácil de impedir o comportamento padrão de a tag. void(*anything*) retorna undefined e é um valor falso. e retornar um valor return false é como return false no evento onclick de a tag que impede seu comportamento padrão.

Então, eu acho que javascript:void(0) é a maneira mais simples de impedir o comportamento padrão de a tag.

Outro exemplo onde é usado javascript.void(0) . Não tenho certeza se é a maneira correta, mas faz o trabalho

 $(document).ready(function() { jQuery(".show-hide-detail").hide(); jQuery(".show-hide-detail:first").show(); jQuery(".show-hide-btn a").click(function() { var thid_data = jQuery(this).attr('data-id'); jQuery(".show-hide-btn a").removeClass('active'); jQuery(this).addClass('active'); if (!jQuery("#" + thid_data).is(":visible")) { jQuery(".show-hide-detail").hide(); jQuery("#" + thid_data).show(); } }); }); 
 

Room Dimensions

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tempor arcu non ligula convallis, vel tincidunt ipsum posuere.sollicitudin. Duis iaculis, arcu ut hendrerit pharetra, elit augue pulvinar magna