Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Após inúmeras tentativas não consegui fazer com que o script abaixo mantivesse aberto para o usuário por tempo necessário para escolha da linguá no menu multilíngue após executado e durante o movimento do ponteiro do mouse para seleção da linguá desejada pelo usuário.
O problema é que o usuário ao mover o ponteiro do mouse sobre o link (Language) ativa a abertura de um menu multilíngue, que antes estava oculto e esse menu multilíngue por sua vez volta a se ocultar antes mesmo do usuário ter selecionado a linguá desejada
O que eu estou em várias tentativas já realizadas buscando corrigir é que o script oculte o menu multilíngue aberto após um tempo se não houver interação, mas que esse tempo seja resetado (reset) sempre que for submetido pelo movimento do ponteiro do mouse sobre as opções de linguás, dando ao usuário o tempo necessário para seleção da linguá desejada
Agradeço desde já a todos pelo tempo, atenção e ajuda e também agradeço quaisquer sugestões afim de permitir que o script abaixo mantenha o menu multilíngue disponível ao usuário para que o mesmo possa selecionar a linguá desejada quando houver interação com o link (Language) mas que esse menu multilíngue se mantenha oculto exceto o link (Language) quando não houver interação
<script language="javascript">
var IE4 = document.all; NS4 = document.layers; NS6 = document.getElementById;
function getStyle(id){return NS4 ? document[id] : NS6 ? document.getElementById(id).style : document.all[id].style;}
function HideLayer(id){getStyle(id).visibility = NS4 ? "hide" : "hidden"; getStyle(id).display = "none";}
function ShowLayer(id){getStyle(id).visibility = NS4 ? "show" : "visible"; getStyle(id).display = "block";}
</script>
<script>
function esconde(){
document.getElementById("menu").style.visibility="hidden";
}
</script>
<form action="#"><input type="submit" onmouseover="ShowLayer('menu')" onmouseout="setTimeout('esconde()',3000);" value="Language"></form>
<div id="menu" onmouseover="ShowLayer('menu')" onmouseout="setTimeout('esconde()',9000);" style="visibility: hidden;" >
<div id="google_translate_element"></div>
<script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'pt',
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, 'google_translate_element');
}
</script>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
Mais uma vez agradeço a todos pelo tempo, ajuda e atenção
Mayck
Bom dia William,
Antes de mais nada agradeço pela orientação, mas infelizmente não possuo conhecimento em java script necessário para a implementação dessa função adicional conforme orientado... caso possivel poderia me mostrar como seria o script alterado conforme descrito com suas orientações?
Mais uma vez agradeço pelo seu tempo, ajuda e atenção
Mayck
<div id="menu" onmouseover="ShowLayer('menu')" onmouseout="esconde()" style="visibility: hidden;" >E lá no esconde você faz o setTimeout:
var tot;
function esconde(){
tot = setTimeout(function() {
document.getElementById("menu").style.visibility="hidden";
}, 9000)
}tendo agora a variável tot em escopo global, você pode limpar ela:
function ShowLayer(id){
clearTimeout(tot);
getStyle(id).visibility = NS4 ? "show" : "visible";
getStyle(id).display = "block";
}entendeu?Perfeito! muito obrigado pela sua ajuda, tempo e atenção
para resetar um setTimeout, você usa um clearTimeout passando a variável retornada pelo setTimeout.