
Javascript Que Não Funciona No Firefox
#1
Posted 14/01/2008, 15:09
O que acontece que não funciona no Firefox? O que eu preciso fazer para funcionar no Firefox também?
Será que alguem pode me ajudar?
#2
Posted 14/01/2008, 15:37
Pessoal eu fiz um JavaScript para validar os campos de um Form. No IE ele valida a extenção do arquivo(foto), o tamanho do arquivo em bytes(fotos), a largura e altura do arquivo(foto) e se o campo está preenchido. Já no Firefox só valida se o campo está preenchido.
O que acontece que não funciona no Firefox? O que eu preciso fazer para funcionar no Firefox também?
Será que alguem pode me ajudar?
tente assim:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html> <head> <title> new document </title> <script> function verifica_extensao(formulario, arquivo){ extencoes_permitidas = new Array(".gif", ".jpg", ".doc", ".pdf"); erro = ""; if (!arquivo) { // Se nenhum arquivo foi selecionado erro = "Nao foi selecionado nenhum arquivo"; }else{ // Recupera a extensão do arquivo extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase(); //alert (extensao); // Valida as extenções permitida = false; for (var i = 0; i < extencoes_permitidas.length; i++) { if (extencoes_permitidas[i] == extensao) { permitida = true; break; } } if (!permitida) { erro = "Verifique as extenções válidas para o arquivo. \nExtenções válidas: " + extencoes_permitidas.join(); }else{ // submetido! alert ("Dados confirmados com sucesso!"); formulario.submit(); return 1; } } // Caso não tenha submetido alert (erro); return 0; } </script> </head> <body> <form method=post action="#" enctype="multipart/form-data"> <input type=file name="arquivoUpload"> <input type=button name="Submit" value="Enviar" onclick="verifica_extensao(this.form, this.form.arquivoUpload.value)"> </form> </body></html>
Edição feita por: § Kenshin §, 15/01/2008, 02:53.
alteracao da tag [code] para [codebox]. leia as regras de utilizacao.
Especialidade: Desenvolvimento e Banco de Dados.
Este post lhe ajudou? Agradeça:
#3
Posted 14/01/2008, 16:05

#5
Posted 14/01/2008, 17:07
No Firefox não é possível.
Caramba ...

Mas então para o IE, como seria?
Estou quebrando a cabeça aqui, assim que terminar coloco aqui!!

Realmente amigo, to vendo que não rola, vc terá que fazer isso com uma linguagem cliente/servidor! Asp, Php ...
Edição feita por: Renan L. Queiroz, 15/01/2008, 07:53.
Especialidade: Desenvolvimento e Banco de Dados.
Este post lhe ajudou? Agradeça:
#6
Posted 15/01/2008, 09:14
#7
Posted 15/01/2008, 09:41
essa questão é realmente interessante porque tudo funciona no IE e nem tudo no Fx, pois bem, depois que foram os padrões de "desenvolvimento " pela w3c, o mozilla que é um navegador livre, tratou de se adequar ao máximo as novas regras, porém o Ie ainda está passando por essa mutação, e , por sinal, vem melhorando a cada dia, e ainda tem muitas coisas que poucos desenvolvedores sabem que já não são mais usadas, mas ainda funcionam no IE. Aqui eu acredito que não seja o caso, acho que é o fato da semelhança entre javascript e jscript. pq quando o javascript foi lançado e veio a ser usado pela maioria dos desenvolvedores, a microsoft lançou uma llinguagem muito semelhante a javascript que é a jscript, por isso a importancia de se colocar que está trabalhando com javascript na tag, caso contrario o Ie pode interpretar o comando como causando incompatibilidade entre os dois navegadores mais usados atualmente. Enfim, não estou dizendo que o problema é esse, nem que não não é, mas que pode ser.
Abaixo está o código com a validação da imagem,, mas só para o IE, alguma coisa faz com que o mozila não abra a maldita imagem:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html> <head> <title> new document </title> <script type="text/javascript"> function verifica_extensao(formulario, arquivo){ extencoes_permitidas = new Array(".gif", ".jpg", ".doc", ".pdf"); erro = ""; if (!arquivo) { // Se nenhum arquivo foi selecionado erro = "Nao foi selecionado nenhum arquivo"; } else{ // Recupera a extensão do arquivo extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase(); //alert (extensao); // Valida as extenções permitida = false; for (var i = 0; i < extencoes_permitidas.length; i++) { if (extencoes_permitidas[i] == extensao) { permitida = true; break; } } if (!permitida) { erro = "Verifique as extenções válidas para o arquivo. \nExtenções válidas: " + extencoes_permitidas.join(); } else{ // submetido! alert ("Dados confirmados com sucesso!"); abrir();verificaTamanho();propriedades(); formulario.submit(); return 1; } } // Caso não tenha submetido alert (erro); return 0; } function abrir(){ document.getElementById('imagem').src=""; document.getElementById('imagem').src=document.getElementById('arquivoUpload').value; alert(document.getElementById('imagem').src); } function verificaTamanho(){ var imagem= document.getElementById('imagem'); var tamanho = 0; tamanho = imagem.fileSize; alert(tamanho); } function propriedades(){ var largura=document.getElementById('imagem').width; var altura= document.getElementById('imagem').height; alert(largura+" x "+altura+" px"); alert(document.getElementById('imagem').src); } </script> </head> <body> <form method=post action="#" name="formulario" enctype="multipart/form-data"> <input type=file id="arquivoUpload"/> <br/> <input type=button name="Submit" value="Enviar" onclick="verifica_extensao(this.form, this.form.arquivoUpload.value)"/> <input type=button onclick="" value="Abrir"/><br/> <img src="" id="imagem" alt="selecione a imagem"/> <script> </script> </form> </body></html>
Edição feita por: § Kenshin §, 15/01/2008, 10:09.
para codigos longos use a tag [codebox].
IT Analyst and Developer
#8
Posted 15/01/2008, 10:12
bem, essa questão é realmente interessante porque tudo funciona no IE e nem tudo no Fx, ...
Conforme o Bira mostrou ... alterei para que as verificações fossem feitas!
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html> <head> <title> new document </title> <script> function verificaExtensao(formulario, arquivo){ // Aqui vc escolhe as exteções permitidas para upload extencoes_permitidas = new Array(".gif", ".jpg"); if (!arquivo) { // Se nenhum arquivo foi selecionado alert("Nao foi selecionado nenhum arquivo"); } else{ // Recupera a extensão do arquivo extensao = (arquivo.substring(arquivo.lastIndexOf("."))).toLowerCase(); // Valida as extenções permitida = false; for (var i = 0; i < extencoes_permitidas.length; i++) { if (extencoes_permitidas[i] == extensao) { permitida = true; break; } } // if (!permitida) { alert("Verifique as extenções válidas para o arquivo. \nExtenções válidas: " + extencoes_permitidas.join()); }else{ alert("Varificação de extensão confirmada! Extenão: "+ extensao); document.getElementById("divImagem").style.visibility = "visible"; abrirImagem(arquivo); } } } function abrirImagem(arquivo){ document.imagem.src = ""; document.imagem.src = arquivo; verificaTamanho(arquivo); } function verificaTamanho(arquivo) { // Recebe na variável o tamanho do arquivo var tamanho_imagem = document.getElementById("imagem").fileSize; if(tamanho_imagem < 0 || tamanho_imagem > 50000){ alert ("O tamanho da Imagem não é permitido!"); java script:location.reload(); } // Tamanho correto else{ alert("Varificação de tamanho confirmada! Tamanho do arquivo: "+ tamanho_imagem +" Bytes!"); verificaDimensoes(arquivo); } } function verificaDimensoes() { var largura = 0; var altura = 0; // recebe os tamanhos largura = document.imagem.width; altura = document.imagem.height; // Verifica dimensões if (largura > 600 || altura > 500 ){ alert("As dimensões da imagem não são suportadas: "+ largura +"px x "+ altura +"px ."); java script:location.reload(); } else{ alert("Varificação de dimensões confirmada! Dimensões: "+ largura +"px x "+ altura +"px ."); submitForm(document.getElementById("formulario")); } } function submitForm(){ alert ("Dados confirmados com sucesso!"); //formulario.submit(); // ou --> location.href = "upload_img.asp" } </script> <style> #divImagem { visibility: hidden; } </style> </head> <body> <form id="formulario" method="post" action="#" enctype="multipart/form-data"> <input type="file" id="formImg" name="arquivoUpload" /> <input type="button" name="Submit" value="Enviar" onclick="verificaExtensao(this.form, this.form.arquivoUpload.value);" /> <br /><br /> <div id="divImagem"> <img src="//" name="imagem" /> </div> </form> </body></html>

Edição feita por: Renan L. Queiroz, 15/01/2008, 10:32.
Especialidade: Desenvolvimento e Banco de Dados.
Este post lhe ajudou? Agradeça:
#9
Posted 15/01/2008, 10:56
cara, tava pesquisando uma coisa e acho que sei o problema do firefox
acho que o problema tá no método fileSize, que pode não estar nas normas do w3c, que aconselha
o uso de linguagens client servidor para upload, como asp e php, então, eu aconselho vc a retirar essa função, ou então então fazer em uma dessas linguagens, não tenho certeza é só uma idéia.
abrass
IT Analyst and Developer
#10
Posted 15/01/2008, 11:22

#11
Posted 15/01/2008, 11:57
Além dessas funções do IE estarem depreciadas, é possível fazer no IE usando controles ActiveX, que também é uma porcaria. Validar imagens no cliente antes de enviar é o sonho da maioria dos desenvolvedores. Você poderia barrar o usuário antes dele enviar um arquivo de 5MB para depois de 10 minutos dizer que a imagem dele é muito grande. ^^
O negócio é só utilizando linguagens server-side. Inclusive algumas delas tem acesso a raw post data, ou seja, não é necessário enviar o arquivos todo para fazer validação.
Eu sei que o PHP não é capaz disso, por isso alguns sistemas de upload utilizam Perl para receber o arquivos antes de passar para o PHP.

Yeah I do have some stories, and it's true I want all the glory ...
#12
Posted 15/01/2008, 13:19
O Firefox não faz isso e muito provavelmente não fará. É errado dar esse poder de ler arquivos ao Javascript. Imaginem um site que pode ler seus arquivos e enviar os dados via AJAX sem você saber, e só de entrar nele. Isso é falha de segurança grave, por isso só o IE faz... ^^
Além dessas funções do IE estarem depreciadas, é possível fazer no IE usando controles ActiveX, que também é uma porcaria. Validar imagens no cliente antes de enviar é o sonho da maioria dos desenvolvedores. Você poderia barrar o usuário antes dele enviar um arquivo de 5MB para depois de 10 minutos dizer que a imagem dele é muito grande. ^^
O negócio é só utilizando linguagens server-side. Inclusive algumas delas tem acesso a raw post data, ou seja, não é necessário enviar o arquivos todo para fazer validação.
Eu sei que o PHP não é capaz disso, por isso alguns sistemas de upload utilizam Perl para receber o arquivos antes de passar para o PHP.
E ainda tem gente falando que o IE e mais seguro que o Fx!!

Especialidade: Desenvolvimento e Banco de Dados.
Este post lhe ajudou? Agradeça:
#13
Posted 15/01/2008, 13:44
#14
Posted 15/01/2008, 13:48
Para mim o que está dando mais trabalho em desenvolver um site é fato de ficar de um jeito no IE de outro jeito no FX e ainda de outro jeito no IE7, dai até vc conseguir acertar em todos os browsers já perdeu o tesão de fazer o site.
Cara não deixe essa falta de vontade lhe desanimar!!
Vamos lá cara!! O forum ta cheio de gente querendo ajudar e gente querendo aprender!!
Pesquisando algumas coisas para lhe responder aprendi algumas coisas novas!
Bora bora na luta cara ...

Edição feita por: Renan L. Queiroz, 15/01/2008, 13:49.
Especialidade: Desenvolvimento e Banco de Dados.
Este post lhe ajudou? Agradeça:
#15
Posted 15/01/2008, 14:06


1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)