Jump to content


Photo

Javascript Que Não Funciona No Firefox


  • Faça o login para participar
14 replies to this topic

#1 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 14/01/2008, 15:09

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?

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

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: Posted Image


#3 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 14/01/2008, 16:05

[:D]Nossa lega cara assim funcinou normalmente no firefox, mas vc consegue fazer para validar altura, a largura e o tamanho do arquivo em bytes também?

#4 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 14/01/2008, 16:56

No Firefox não é possível.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#5 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 14/01/2008, 17:07

No Firefox não é possível.


Caramba ... :blink:
Mas então para o IE, como seria?

Estou quebrando a cabeça aqui, assim que terminar coloco aqui!! :shit:

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: Posted Image


#6 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 15/01/2008, 09:14

Eu já vi muitos sites que tem vários tipos de validação que funcionam normalmente no IE, mas quando eu abro no Firefox não valida nada, deixa passar tudo. Porque será que isso acontece? Será que tem que passar algum tipo de parâmetro para o Firefox entender?

#7 Aimberê Rocha Mendonça

Aimberê Rocha Mendonça

    Turista

  • Usuários
  • 45 posts
  • Sexo:Masculino
  • Localidade:brasília

Posted 15/01/2008, 09:41

bem,
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].

Aimberê Rocha Mendonça
IT Analyst and Developer

#8 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

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>

(y)

Edição feita por: Renan L. Queiroz, 15/01/2008, 10:32.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#9 Aimberê Rocha Mendonça

Aimberê Rocha Mendonça

    Turista

  • Usuários
  • 45 posts
  • Sexo:Masculino
  • Localidade:brasília

Posted 15/01/2008, 10:56

opa sou eu dinovo
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
Aimberê Rocha Mendonça
IT Analyst and Developer

#10 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 15/01/2008, 11:22

Pode ser isso mesmo, mas o que poderia colocar no ligar do método filesize??? :mellow:

#11 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 15/01/2008, 11:57

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.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#12 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

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: Posted Image


#13 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 15/01/2008, 13:44

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.

#14 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

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 ... :boxing: !!

Edição feita por: Renan L. Queiroz, 15/01/2008, 13:49.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#15 Tonii

Tonii

    Novato no fórum

  • Usuários
  • 10 posts
  • Sexo:Não informado

Posted 15/01/2008, 14:06

:D hehehe... Valeu pela força cara, você está certo mesmo!!! E como eu sempre digo... Já que pisou na xxxxxx abre os dedos!!! Vamos lá :boxing:




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq