Ir para conteúdo
Fórum Script Brasil
  • 0

Não funciona no FireFox


fertel

Pergunta

Terminei um site a pouco tempo. Eu feliz da vida porque tudo estava funcionando perfeitamente. Até que fui testar no Firefox, aí veio um mar de decepções. Tenho minhas opiniões pessoais sobre esse navegador, que não vem ao caso discutir, mas sabendo que muita gente usa desse navegador, preciso de qualquer forma consertar os bugs que apareceram. Na realidade até agora localizei 4 bizarrices:

1 - Uma tabela mesmo alinhada ao centro insistia em ir para a esquerda (resolvido).

2 - Ao abrir uma foto numa espécia de popup no FF só aparece abaixo da janela, fora de posição. (tratarei depois disso)

3 - tenho um menu, cujos links (<a href>) ficam em volta da coluna, ou seja: <a href="etc"><td>link</td></a>. Não funciona no FireFox nem com reza braba.

4 - Tenho uma galeria de fotos numa página com miniaturas lado a lado. O que código javascript faz é mover a camada de um lado para outro movendo essas fotos para o usuário escolher em qual clicar. Bom, no IE funciona perfeitamente, mas no FireFox 3 não. Eis o código:

&lt;script>
var limite = -<%=Cint(limite)%> //Essa é uma variável que é definida antes por um ASP, tudo ok aqui.

var velo_scroll = 10; // velocidade da rolagem
var pixel_scroll = 1; // quantidade de saltos entre os pixels
var window_width = 400; 
var isNav;
var isIE;
var coll = "";
var styleObj = "";
if (parseInt(navigator.appVersion) >= 4) {
if (navigator.appName == "Netscape") {
isNav = true;
} else {
isIE = true;
coll = "all.";
styleObj = ".style";
}
}

function getObjWidth(obj) {
var theObj = eval("document." + coll + obj);
if (isNav) {
return theObj.clip.width;
} else {
return theObj.clientWidth;
}
}

function getObject(obj) {
if (typeof obj == "string") {
theObj = eval("document." + coll + obj + styleObj);
} else {
theObj = obj;
}
return theObj;
}

function getInsideWindowWidth() {
if (isNav) {
return window.innerWidth;
} else {
return document.body.clientWidth;
}
}

function getObjectLeft(obj) {
var theObj = getObject(obj);
if (isNav) {
return theObj.left;
} else {
return theObj.pixelLeft;
}
}

function shiftBy(obj, x, y) {
var theObj = getObject(obj);
if (isNav) {
theObj.left = theObj.left + x;
theObj.top = theObj.top + y;
} else {
theObj.pixelLeft = theObj.pixelLeft + x;
theObj.pixelTop = theObj.pixelTop + y;
}
}

var tim = 0;
var noScroll = true;

function mLeft(obj) {
obj = "menu"
if(!noScroll && parseInt(menu.style.left) < 0) {
shiftBy(obj,pixel_scroll,0);
tim = setTimeout("mLeft()", velo_scroll);
}
}

function mRight(obj) {
obj = "menu";
if(!noScroll && parseInt(menu.style.left) > limite) {
shiftBy(obj,-pixel_scroll,0);
tim = setTimeout("mRight()", velo_scroll);
}
}

function noMove() {
clearTimeout(tim);
noScroll = true;
}

</script>
Ok, nos botões esquerda e direita as funções são chamadas assim (onde 'menu' é a camada a ser movida):
<a href="#" onMouseOver="noScroll=false; mLeft('menu')" onMouseOut="noMove()"><img src="imagens/001_23.png" id="left" width="24" height="24" border="0"></a>
<a href="#" onmouseover="noScroll=false; mRight('menu')" onmouseout="noMove()"><img src="imagens/001_21.png" id="right" width="24" height="24" border="0"></a>

Eu realmente tentei arrumar isso, pesquisei em fóruns até do exterior e não achei muita coisa à respeito e o pouco que eu achei que resolveria, não ajudou muito. Será que algum guru do JavaScript poderia me aconselhar?

Editado por fertel
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Pra facilitar, criei uma página de teste completa em HTML. Podem ver que no IE funciona e no Firefox não:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sem t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script>
var limite = -500;

var velo_scroll = 10; // velocidade da rolagem
var pixel_scroll = 1; // quantidade de saltos entre os pixels
var window_width = 400; 
var isNav;
var isIE;
var coll = "";
var styleObj = "";
if (parseInt(navigator.appVersion) >= 4) {
if (navigator.appName == "Netscape") {
isNav = true;
} else {
isIE = true;
coll = "all.";
styleObj = ".style";
}
}

function getObjWidth(obj) {
var theObj = eval("document." + coll + obj);
if (isNav) {
return theObj.clip.width;
} else {
return theObj.clientWidth;
}
}

function getObject(obj) {
if (typeof obj == "string") {
theObj = eval("document." + coll + obj + styleObj);
} else {
theObj = obj;
}
return theObj;
}

function getInsideWindowWidth() {
if (isNav) {
return window.innerWidth;
} else {
return document.body.clientWidth;
}
}

function getObjectLeft(obj) {
var theObj = getObject(obj);
if (isNav) {
return theObj.left;
} else {
return theObj.pixelLeft;
}
}

function shiftBy(obj, x, y) {
var theObj = getObject(obj);
if (isNav) {
theObj.left = theObj.left + x;
theObj.top = theObj.top + y;
} else {
theObj.pixelLeft = theObj.pixelLeft + x;
theObj.pixelTop = theObj.pixelTop + y;
}
}

var tim = 0;
var noScroll = true;

function mLeft(obj) {
obj = "menu"
if(!noScroll && parseInt(menu.style.left) < 0) {
shiftBy(obj,pixel_scroll,0);
tim = setTimeout("mLeft()", velo_scroll);
}
}

function mRight(obj) {
obj = "menu";
if(!noScroll && parseInt(menu.style.left) > limite) {
shiftBy(obj,-pixel_scroll,0);
tim = setTimeout("mRight()", velo_scroll);
}
}

function noMove() {
clearTimeout(tim);
noScroll = true;
}

</script>
<body><br>

<div id="mask" style="position:absolute; width:623px; height:115px; z-index:1; overflow: hidden; "> 
                                                  
  <div id="menu" style="position:absolute; width:1172px; height:115px; z-index:1; overflow: hidden; left: 0;"><nobr> 
    <img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"><img src="http://img505.imageshack.us/img505/7972/grid8thumblg7.jpg" width="100" height="56"><img src="imagens/site/spacer.gif" width="10" height="40" align="absmiddle"> 
    </nobr></div>
          
<p><br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <br>
  <a href="#" onMouseOver="noScroll=false; mLeft('menu')" onMouseOut="noMove()"><br>
  </a></p>
<p align="center"><a href="#" onMouseOver="noScroll=false; mLeft('menu')" onMouseOut="noMove()"><img src="imagens/001_23.png" id="left" width="24" height="24" border="0"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  <a href="#" onmouseover="noScroll=false; mRight('menu')" onmouseout="noMove()"><img src="imagens/001_21.png" id="right" width="24" height="24" border="0"></a> 
</p>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

fertel, eu sei que você não gosta do FF por motivos pessoais, mas como desenvolvedor deve ter mais "jogo de cintura".

Todos nós sabemos sobre as diferenças que existem entre os navegadores, então é prudente ao desenvolver um site usar todos os navegadores que deseja que seu site seja bem visualizado, óbvio.

O iE encherga qualquer coisa mal feita, se errar ele conserta. Isso é ruim para os padrões.

3 - tenho um menu, cujos links (<a href>) ficam em volta da coluna, ou seja: <a href="etc"><td>link</td></a>. Não funciona no FireFox nem com reza braba.

O FF te ajuda a fazer códigos bem feitos dessa forma. Um link dentro de um td de tabela? Isso não existe.

Aí, não adianta botar aquele doctype no topo do seu html, porque isso que está fazendo não é um html bem formado. Neste caso, ter um doctype ou não ter não vai fazer a menor diferença.

E com certeza não irá funcionar no FF, ele não aceita html mal formado.

4 - Tenho uma galeria de fotos numa página com miniaturas lado a lado. O que código javascript faz é mover a camada de um lado para outro movendo essas fotos para o usuário escolher em qual clicar. Bom, no IE funciona perfeitamente, mas no FireFox 3 não.

Tenho duas hipóteses para esse problema.

1- O desenvolvedor do script cometeu o mesmo erro que você, fez um código apenas para um navegador.

2- O desenvolvedor fez o script para que funcionasse em todos os navegadores, mas você mudou coisas no script fazendo com que ele não funcionasse direito.

Não olhei o script todo, mas o que me chamou a atenção numa vista rápida foi isso num trecho:

function mLeft(obj) {
obj = "menu"
if(!noScroll && parseInt(menu.style.left) < 0) {
shiftBy(obj,pixel_scroll,0);
tim = setTimeout("mLeft()", velo_scroll);
}
}

Que isso? O obj recebe uma string "menu" (Não sei porque existe o parametro da função), aí ele converte para um inteiro o

menu.style.left. Mas menu está aonde????????

Ali seria um getElementById(obj) então?

Logo abaixo a função chama a shiftBy() com obj como parâmetro. Pelo nome, o obj é um objeto, no entanto você está passando uma string.

Eu fico extremamente espantado em saber que isso funciona!!!! Parece até que o iE tem vida própria o.O.

Lembra das duas hipóteses de anteriormente? No caso da primeira, procure outro script melhor elaborado.

No caso da segunda, pegue o script de novo no site, e desta vez faça as alterações necessárias corretamente, se precisar de ajuda estamos aqui.

Fertel, os sites são feitos em cima do FF, não do iE.

Link para o comentário
Compartilhar em outros sites

  • 0

3 - tenho um menu, cujos links (<a href>) ficam em volta da coluna, ou seja: <a href="etc"><td>link</td></a>. Não funciona no FireFox nem com reza braba.

O FF te ajuda a fazer códigos bem feitos dessa forma. Um link dentro de um td de tabela? Isso não existe.

Aí, não adianta botar aquele doctype no topo do seu html, porque isso que está fazendo não é um html bem formado. Neste caso, ter um doctype ou não ter não vai fazer a menor diferença.

E com certeza não irá funcionar no FF, ele não aceita html mal formado.

Então você precisa rever seus conceitos sobre sites. Se eu quero um menu em uma linha de tabela, que ela realce ao passar o mouse e ainda abrir um link, sem sublinha, não vejo problema em colocar o link em volta de um <td></td>. Seu argumento é que o FireFox é tão bom que não aceita uma coisa simples dessa? Então tá, o IE deve ser muito ruim mesmo por funcionar nesse sentido :closedeyes:

O iE encherga qualquer coisa mal feita, se errar ele conserta. Isso é ruim para os padrões.

Belo argumento.

Seria bom se além de criar um post para criticar o trabalho dos outros, você tivesse algo à acrescentar para ajudar, afinal de contas essa é a função do fórum. Como eu disse antes, não vem ao caso se o IE é tão ruim por funcionar ou o FireFox tão bom por não funcionar (segundo sua teoria). Eu apenas coloquei um problema para ver se alguém "pescava" ali um erro que não fazia o mesmo funcionar no FireFox. Opinião cada um tem a sua, por isso não critiquei abertamente navegador X ou Y, apenas tenho um problema e quero resolver.

No mais, obrigado pela sua participação.

Link para o comentário
Compartilhar em outros sites

  • 0
Então você precisa rever seus conceitos sobre sites. Se eu quero um menu em uma linha de tabela, que ela realce ao passar o mouse e ainda abrir um link, sem sublinha, não vejo problema em colocar o link em volta de um <td></td>. Seu argumento é que o FireFox é tão bom que não aceita uma coisa simples dessa? Então tá, o IE deve ser muito ruim mesmo por funcionar nesse sentido
Menu é com listas. Pelo jeito está montando layout com tabelas, outro erro.

Ahhh...você não ve problemas nisso? Então as coisas podem ser feitas enquanto VOCÊ não achar problemas?

Mande seu currículo pra World Wide Web Consortium.

Seria bom se além de criar um post para criticar o trabalho dos outros, você tivesse algo à acrescentar para ajudar, afinal de contas essa é a função do fórum. Como eu disse antes, não vem ao caso se o IE é tão ruim por funcionar ou o FireFox tão bom por não funcionar (segundo sua teoria). Eu apenas coloquei um problema para ver se alguém "pescava" ali um erro que não fazia o mesmo funcionar no FireFox. Opinião cada um tem a sua, por isso não critiquei abertamente navegador X ou Y, apenas tenho um problema e quero resolver.

Críticas são muito bem vindas para quem quer aprender. Eu acrescentei elas justamente para te ajudar.

No meu post eu indiquei exatamente onde estavam os problemas, mas seu ego falou mais alto e não te deixou ler a parte técnica do post.

Mas me desculpe tudo bem? Eu não sabia que manjava tanto do assunto. Deve estar completamente a par sobre tableless, semântica e padrões.

Mil desculpas eu realmente não sabia com quem eu estava tratando, quem sou eu pra discutir sobre um assunto desses...eu não sei nada...

Vou rever os meus conceitos. :)

Link para o comentário
Compartilhar em outros sites

  • 0
Então você precisa rever seus conceitos sobre sites. Se eu quero um menu em uma linha de tabela, que ela realce ao passar o mouse e ainda abrir um link, sem sublinha, não vejo problema em colocar o link em volta de um <td></td>. Seu argumento é que o FireFox é tão bom que não aceita uma coisa simples dessa? Então tá, o IE deve ser muito ruim mesmo por funcionar nesse sentido
Menu é com listas. Pelo jeito está montando layout com tabelas, outro erro.

Ahhh...você não ve problemas nisso? Então as coisas podem ser feitas enquanto VOCÊ não achar problemas?

Mande seu currículo pra World Wide Web Consortium.

Seria bom se além de criar um post para criticar o trabalho dos outros, você tivesse algo à acrescentar para ajudar, afinal de contas essa é a função do fórum. Como eu disse antes, não vem ao caso se o IE é tão ruim por funcionar ou o FireFox tão bom por não funcionar (segundo sua teoria). Eu apenas coloquei um problema para ver se alguém "pescava" ali um erro que não fazia o mesmo funcionar no FireFox. Opinião cada um tem a sua, por isso não critiquei abertamente navegador X ou Y, apenas tenho um problema e quero resolver.

Críticas são muito bem vindas para quem quer aprender. Eu acrescentei elas justamente para te ajudar.

No meu post eu indiquei exatamente onde estavam os problemas, mas seu ego falou mais alto e não te deixou ler a parte técnica do post.

Mas me desculpe tudo bem? Eu não sabia que manjava tanto do assunto. Deve estar completamente a par sobre tableless, semântica e padrões.

Mil desculpas eu realmente não sabia com quem eu estava tratando, quem sou eu pra discutir sobre um assunto desses...eu não sei nada...

Vou rever os meus conceitos. :)

Kakarotto, ao contrário do que você pensa, eu não estou sendo orgulhoso. Eu apenas recorri ao fórum porque precisava de ajuda. Deixei bem claro que não gostaria de discutir nada sobre navegador, e o que aconteceu foi que meu tópico foi totalmente desvirtuado do problema que eu queria tratar. Virou uma guerra de ego e opiniões sem sentido, que eu nem sei porque começou. Acho que se alguém sabe a resposta para algo, vai lá e ajuda de boa vontade, se não sabe, não posta nada, até para não causar flood no fórum.

Eu sou programador de ASP e PHP, não sei muito de JavaScript, só o básico mesmo, por isso recorri a esse fórum, que sou cadastrado desde 2003, porque precisei de uma orientação, não para ser humilhado ou ler coisa do tipo que você botou sobre currículo. Infelizmente não sei como resolver meu problema com o javascript e não era este tipo de coisa que esperava receber aqui, muito menos de um moderador. À respeito do currículo, vou fazer de conta que não li isso, foi totalmente desnecessário.

Pode trancar o tópico, infelizmente ele perdeu o sentido e sua objetividade.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...