Ir para conteúdo
Fórum Script Brasil

Jonathan Queiroz

Membros
  • Total de itens

    3.718
  • Registro em

  • Última visita

Tudo que Jonathan Queiroz postou

  1. Nesse caso não faz absolutamente nada. Para entender melhor, troque o nome do parâmetro: <HTML> <HEAD> <script LANGUAGE="javascript"> function controle(elemento) { var test = document.form1.input.value; alert("Escreveste: " + test); } </SCRIPT> </HEAD> <BODY> <FORM NAME="form1"> <INPUT TYPE="text" NAME="input" VALUE=""><BR> <INPUT TYPE="button" NAME="botao" VALUE="Controlar" onClick="controle(form1)"> </FORM> </BODY> </HTML> Como você pode ver, o parâmetro não é utilizado. Seria utilizado se você trocasse essa linha: var test = document.form1.input.value Por: var test = elemento.input.value; Não sei o motivo que fez o autor criar uma função cujos parâmetros não são utilizados e, pior, colocou um nome que poderia confundir o leitor (form1, que é o nome do parâmetro e ainda o nome do formulário)
  2. Esse exemplo realmente não foi dos melhores. Aquele "form1" é um parâmetro que a função recebe (no caso, um elemento HTML). E no evento onclick é chamada a função passando o parâmetro form1 (argumento da função) com o valor de form1 (formulário). Na verdade o parâmetro não é nem utilizado, seria se trocasse: var test = document.form1.input.value; Por: var test = form1.input.value; No segundo caso o "form1" se refere ao parâmetro (e acaba sendo o document.form1, pois o parâmetro passado tinha esse valor). Já no primeiro, o "form1" refere-se diretamente ao elemento HTML cujo atributo name é form1. Mas esse tipo de código deve ser evitado (não falo da utilização de duas variáveis com mesmo nome, isso pode ocorrer desde que se entenda o que está ocorrendo - só é ruim em tutoriais, por confundir o leitor). O problema maior é utilizar coisas do tipo "document.nome_do_elemento_html", "document.form1", etc.
  3. Depois de alguns membros sugerindo um Torneio de Programação, resolvemos fazer um em JavaScript Equipe de organização do Torneio: .Andreia.fercosmigJonathan QueirozMLeandroJr!Em caso de dúvida você pode consultar os organizadores do evento Regras do Torneio: Como podem ver, o torneio é dividido em três fases ! A fase atual é o Nível Avançado Nível Avançado O Nível Avançado é composto de um desafio. Quarto Desafio (Aberto) Desafio: Criação de Calculadora Descrição: O usuário deverá criar uma calculadora com o máximo de funcionalidades possível. Quanto mais funcionalidades forem apresentadas, melhor a pontuação. Requisitos Mínimos: Como já dito acima, a pontuação do usuário depende das funcionalidades apresentadas pelo programa. Sendo assim, segue uma lista de idéias que poderão ser utilizadas pelos participantes do desafio: Nenhuma dessas funções são necessárias, são apenas dicas para aumentar as funcionalidades de seu programa. Se desejar, também poderá implementar outras funcionalidades não citadas aqui. Pontuação para 1º lugar: 100 pontos Pontuação para 2º lugar: 70 pontos Pontuação para 3º lugar: 50 pontos Pontuação para demais posições: Será avaliada pelos organizadores do evento. O membro poderá (ou não) conseguir pontos Além disso, poderão ser distibuídas pontuações extra de acordo com as funcionalidades do programa (inclusive para os ganhadores do evento). Prazo de Entrega (Máximo): 31/01/2010 Prorrogação: 15/02/2010 O script poderá ser entregue antes ! Obs.: Qualquer usuário cadastrado poderá participar desse desafio, mesmo que não tenha participado das etapas anteriores. Primeira fase: http://scriptbrasil.com.br/forum/index.php?showtopic=131528 Segunda fase: http://scriptbrasil.com.br/forum/index.php?showtopic=138353 Terceira fase (cancelada): http://scriptbrasil.com.br/forum/index.php?showtopic=143115 Observações As regras dessa etapa sofreram modificações, que incluem principalmente informações sobre licença. É recomendável a leitura de Divulgação dos scripts e licença, que contém as modificações desde a última fase.Os scripts enviados pelos membros estão sendo postados nesse tópico: Scripts do Torneio de JavascriptMais informações, como pontuação de membros, estão disponíveis no Anúncio do Torneio de Javascript
  4. Isso ocorre quando você tenta inserir modificações no header após enviar algum dado ao navegador. Se possível poste o código com problema.
  5. Excelente post ! Ainda não cheguei a testar, mas será muito útil !
  6. Movendo: Ajax, Javascript, XML, DOM --> PHP. Esse código vai pegar o código-fonte do site, mas se você imprimir direto vai acabar com o resultado igual no navegador. Você terá que modificar o código para que o HTML não seja interpretado pelo navegador. Basicamente, substitua < por &lt;, > por &gt; e & por &amp;.
  7. Tudo bem, Rafael ? Não mexo muito com essa parte de vários idiomas, mas creio que seja possível configurar o navegador para modificar o idioma. Outra coisa: eu acho melhor utilizar linguagem server-side para configurações de idioma. Dessa forma é fácil salvar os dados em sessões, interagir com banco de dados, etc.
  8. Movendo: Classificados & Serviços --> Oportunidades para Freelances. Obs.: O tópico já faz mais de 3 meses e a última atividade do membro foi em outubro...
  9. Movendo: HTML, XHTML, CSS --> PHP. Se utilizar os comentários condicionais (coloquei link acima) não é necessário hack. Basicamente, dessa forma que você vai fazer (eu realmente não recomendo), criará uma pasta para o site do ie6 e verificará no PHP se o navegador é o ie6. Se for, redireciona para a pasta. Se não me engano tem a ver com as variáveis do servidor ($_SERVER). Procure sobre isso depois.
  10. É possível, mas não recomendo. Vai dar muito trabalho fazer um site duas vezes. O ideal é um código CSS que funcione em todos os navegadores. Se não for possível, crie um arquivo css diferente para o IE: http://www.maujor.com/tutorial/antigos-ie.php Vou mover o tópico para HTML e aguardar resposta. Se for mesmo utilizar esse método, é com HTML. Mas se quiser criar um site diferente para cada navegador (não recomendo), moverei para PHP. Movendo: Outros assuntos --> HTML, XHTML, CSS.
  11. Excentente post ! Gostei muito da classe, a utilização é simples. Só tenho uma pequena sugestão: acho que seria interessante modificá-la para que pudesse ser utilizado o "state" e o "sucess" ao mesmo tempo. Na maioria dos casos nem faz muito sentido (se quiser utilizar o "sucess", basta verificar se o estado é 4 no "state"). Mas a solução desse problema (criar variáveis internas para armazenar as duas funções ["onsucess" e "onstatechange"] e chamá-las no onreadystatechange padrão do xmlhttp) ajudaria a solucionar outro pequeno problema: a função state com readyState = 1 ocorre duas vezes. Na verdade isso acontece porque o onreadystatechange foi definido antes de se chamar o método open. O problema é que o método open chama a função onreadystatechange com readyState=1 (se ela existir, e esse é o caso) e o método send chama todos os 4 estados (repetindo o primeiro). Mas não é nada que venha a causar grandes problemas. Também tenho uma dúvida: vi que na sua classe há o uso do método call para chamar funções. Pesquisei um pouco, mas não achei nada que falasse sobre os argumentos passados para a função "call". Após alguns testes percebi que os valores do segundo argumento em diante são passados para a função como parâmetros, mas não consegui descobrir o que é o primeiro parâmetro. Na sua classe você utilizou o objeto "singleton", que é o próprio objeto xmlhttp. Você tem algum link que fale sobre o método call ? Gostaria de estudar mais sobre ele. Enfim, gostei muito da sua classe. Parabéns !
  12. Valeu, Eduardo. Depois vou ver se implemento a classe para suportar simultaneamente valores passados por GET e POST. Como foi criada inicialmente para atender às minhas necessidades específicas eu não implementei isso. Quanto ao nome, a classe inicialmente chamava-se apenas "AJAX" (inclusive num dos sites que estou programando ainda está com esse nome rsrs). Mas pra postar aqui resolvi mudar, achei que somente "AJAX" não ficaria legal. Depois vou pensar se permito a utilização do modo síncrono ao invés de somente assíncrono, mas acho que não. Até porque a classe não executa as requisições simultaneamente (o que pode sobrecarregar o navegador), ela cria uma "fila". No modo síncrono sequer seria necessário criar a fila. Vou editar meu post para postar outras classes relacionadas e colocar um link para os arquivos compactados (como no seu post). Cheguei a ler o tópico de sua classe, mas ainda não testei (vou fazer agora).
  13. Postei a classe no Repositório de Scripts. Se quiser olhar: http://scriptbrasil.com.br/forum/index.php?showtopic=145629
  14. Para facilitar a utilização de AJAX em alguns sites que estava desenvolvendo resolvi criar uma classe. Conforme pedido de membro, postarei essa classe aqui. Embora o código da classe seja auto-explicativo, postarei uma breve explicação: Para os exemplos de utilização criei quatro arquivos (dos quais somente três são necessários)AjaxClass.js (código responsável pela nossa classe);pagina.html (página que utiliza a classe);arquivo.asp (script simples em ASP que mostra os valores passados por GET/POST)arquivo.php (script simples em PHP 5 que mostra os valores passados por GET/POST)Obs.:Lembrem-se de salvar os arquivos arquivo.asp e arquivo.php em UTF-8 (na dúvida, abra o bloco de notas, vá em Salvar como, coloque a codificação como UTF-8 e clique em Salvar). Isso deve ser utilizado para qualquer arquivo que venha a ser requisitado por AJAX. Isso pode ser feito nas opções de seu editor.Criei os arquivos em PHP e ASP apenas para facilitar o entendimento de quem ler (se fizesse em apenas uma linguagem, quem não tivesse experiência nela teria mais dificuldade em entender o código). No arquivo de utilização (pagina.html), o arquivo arquivo.php é requisitado, mas isso pode ser alterado facilmente (basta trocar o ".php" para ".asp" na linha 20). Também é possível alterar o método de POST para GET (o que também irá modificar o resultado da requisição), basta trocar o POST para GET na linha 19.AjaxClass.js /******** Classe AJAX ******** Autor: Jonathan Coutinho Luz de Queiroz E-mail: jonathan.jclq@gmail.com */ AjaxClass = function () { /*Criar requisição AJAX*/ this.CreateXMLHttpRequest = function () { try { // Firefox, Opera 8.0+, Safari, IE7+, ... return new XMLHttpRequest(); } catch (e) { // Internet Explorer 6+ try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { //Internet Explorer 5.5+ try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { //Não conseguiu criar o objeto return null; } } } return xmlHttp } //Objeto XMLHTTP var xmlhttp = this.CreateXMLHttpRequest() //Verificamos se a requisição foi instancia com sucesso if (!xmlhttp) { /*Não conseguimos instanciar o XMLHTTP. Nesse caso, o objeto AJAX será "null"*/ return null } //Requisições var atual var requisicoes = [] var processando if (!atual) { atual = 0 } //Valores para requisição this.RequestValue = function () { //Variáveis var itens = [] //adicionar/Modificar this.setValue = function (nome, valor) { try { valor = valor.toString() } catch (e) { valor = "" } itens[nome] = valor } //Remover this.remove = function (nome) { itens[nome] = null } //Obter valor this.getValue = function (nome) { return itens[nome] } //Obter string this.getString = function () { //Retorno dessa função var retorno = "" //Codificação (tratamento de string) var encode = function (v) { return v .toString() .replace(/&/g, "%26") .replace(/ /g, "%20") } //Percorre nossos objetos e gera o retorno for (var i in itens) { if (itens[i] != null) { if (retorno != "") { retorno += "&" } retorno += encode(i) + "=" + encode(itens[i]) } } //Retornamos o valor return retorno } } //Adicionar requisição requisição this.add = function (metodo, url, valores, funcao_sucesso, funcao_erro) { //Adiciona os valores no array var i = requisicoes.length requisicoes[i] = [] //Método da requisição requisicoes[i]["method"] = metodo.toUpperCase() //Url da requisição requisicoes[i]["url"] = url //Valores da requisição if (valores == null) { //Se era nulo, transformamos numa string vazia valores = "" } else if (valores.constructor == this.RequestValue) { /*Se o valor é da classe "RequestValue", obtemos transformamos numa string que será o novo valor*/ valores = valores.getString() } requisicoes[i]["valor"] = valores //Funções (sucesso/erro) requisicoes[i]["funcao"] = funcao_sucesso requisicoes[i]["funcao_erro"] = funcao_erro //Processa as requisições (não necessariamente essa) Processa() } //Processa var Processa = function () { //Verifica se já está processando if (processando) { //Se já estamos processando, sai return } //Verifica se ainda há requisições if (!requisicoes[atual]) { //Se não há requisição, vamos sair return } //Indica que está processando processando = true //Função executada ao terminar a requisição var OnEnd = function (retorno) { //Executa as funções de erro/sucesso if (retorno == null) { //Verificamos se a função de erro é realmente uma função if (typeof (requisicoes[atual]["funcao_erro"]) == "function") { //Se sim, a chamamos passando "null" como parâmetro requisicoes[atual]["funcao_erro"](null); } else if (requisicoes[atual]["funcao_erro"] == true) { /*Se o valor de "funcao_erro" for null, devemos chamar a mesma função de sucesso com parâmetro "null"*/ requisicoes[atual]["funcao"](null); } } else { /*Se tivermos uma função de sucesso a executamos passando o valor de retorno como parâmetro*/ if (typeof (requisicoes[atual]["funcao"]) == "function") { requisicoes[atual]["funcao"](retorno) } } //Indica que não estamos mais processando processando = false //Processamos a próxima requisição atual++ Processa() } //Processamento para método GET var requisicao_url = requisicoes[atual]["url"] if ( requisicoes[atual]["method"] == "GET" && requisicoes[atual]["valor"] ) { requisicao_url += "?" + requisicoes[atual]["valor"] } //Criamos a requisição xmlhttp.open(requisicoes[atual]["method"], requisicao_url, true) //Processamento para método POST if (requisicoes[atual]["method"] == "POST") { xmlhttp.setRequestHeader( "Content-type", "application/x-www-form-urlencoded; charset=UTF-8") xmlhttp.setRequestHeader('Content-length', requisicoes[atual]["valor"].length) } //Função executada na mudança de estado da requisição xmlhttp.onreadystatechange = function () { //Verificamos se o "readyState" é "4" (requisição finalizada) if (xmlhttp.readyState == 4) { //Verificamo o "status" if (xmlhttp.status == 200) { //Se o status for 200, tudo OK ! OnEnd(xmlhttp.responseText) //Sucesso ! } else { //Se não for 200, problemas ! OnEnd(null) //Erro ! } } } //Função executada quando ocorrerem erros try { //Nem sempre o "onerror" é suportado, por isso o try..catch xmlhttp.onerror = function () { OnEnd(null) //Erro ! } } catch (erro) { //Vamos ter que "sobreviver" sem o onerror } //Parâmetro do método "send" var requisicao_sendvalue = null //Só é necessário se o método for POST if (requisicoes[atual]["method"] == "POST") { requisicao_sendvalue = requisicoes[atual]["valor"] } //Enviamos a requisição xmlhttp.send(requisicao_sendvalue) //Retorna true return true } //Retorna nossa classe return this } () pagina.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Exemplo com AjaxClass</title> <meta name="author" content="Jonathan Coutinho Luz de Queiroz" /> <script type="text/javascript" src="AjaxClass.js"></script> <script type="text/javascript"> onload = function () { //Verificamos o suporte a AJAX if (AjaxClass) { //Valores que passaremos (modifique-os e veja o resultado da requisição) var valores = new AjaxClass.RequestValue() valores.setValue("Valor1", 50) valores.setValue("Outro_valor", "Olá !") valores.setValue("Pergunta", "Tudo bem com você ?") //Adiciona a requisição AjaxClass.add( "GET", /*Método (recomendo que altere para testar, o resultado será diferente)*/ "arquivo.php", //Url valores, //Valores passados por GET function (r) { var txtResultadoRequisicao = document.createElement("textarea") txtResultadoRequisicao.value = r txtResultadoRequisicao.style.width = "100%" txtResultadoRequisicao.style.height = "200px" document.body.appendChild(txtResultadoRequisicao) }, //Função executada quando houver sucesso function () { alert("Ocorreu um erro ao processar a requisição") } //Função executada quando ocorrerem erros ) } else { alert("Desculpe, seu navegador não possui suporte a AJAX") } } </script> </head> <body> <h1>Exemplo de código utilizando AjaxClass</h1> Autor da classe: Jonathan Coutinho Luz de Queiroz </body> </html> arquivo.asp Se você está visualizando esse texto, parabéns ! O arquivo foi carregado corretamente por AJAX. <% 'Esse código ASP foi criado para servir de exemplo para o AjaxClass 'Basicamente, esse script lista os valores vindos pelos métodos GET e POST 'Autor: Jonathan Coutinho Luz de Queiroz 'Contato: jonathan.jclq@gmail.com 'Função para listar valores de uma coleção function Listar(a) for each i in a Response.Write(" " & i & " = """ & a(i) & """" & vbcrlf) next end function 'Charset Response.CharSet="UTF-8" 'Listamos os valores vindos por GET Response.Write("Valores vindos por GET:" & vbcrlf) Listar(Request.QueryString) 'Listamos os valores vindos por POST Response.Write("Valores vindos por POST:" & vbcrlf) Listar(Request.Form) %> arquivo.php Se você está visualizando esse texto, parabéns ! O arquivo foi carregado corretamente por AJAX. <?php /* Esse código PHP 5 foi criado para servir de exemplo para o AjaxClass Basicamente, esse script lista os valores vindos pelos métodos GET e POST Autor: Jonathan Coutinho Luz de Queiroz Contato: jonathan.jclq@gmail.com */ //Função para listar valores function Listar($a){ foreach($a as $nome => $valor){ echo ' ' . $nome . " = \"" . $valor . "\"\n"; } } //Lista os valores passados por GET echo "Valores vindos por GET:\n"; Listar($_GET); //Lista os valores passados por POST echo "Valores vindos por POST:\n"; Listar($_POST); ?> Testem e postem o que acham, o que poderia ser melhorado, etc. Scripts relacionados Interface AjaxAutor: KakarottoDescrição: Código pronto para executar ajax.Ajax.ClassAutor: KakarottoDescrição: Outra classe simples para manipulação de ajax.AnexosMegauploadAjaxClass_example.rar - Exemplo de utilização + arquivo da classeAjaxClass.js.rar - Arquivo da classe (.js) - Não inclui exemplo de implementaçãoAnexos no fórum:AjaxClass_example.rar AjaxClass.js.rar
  15. ola 'Mnemonic. será que pode me ajudar com esse exercicio? Elabore um programa que leia em seqüência os votos (0 a 3). O programa deve finalizar com voto negativo. No final deve-se imprimir: --> total de votos --> total e percentual de votos para cada candidato --> total e percentual de votos para voto nulo --> total e percentual de votos para voto em branco --> candidato vencedor meu email: aamon.wolfsnake@gmail.com Peço que evite mudar o assunto de um tópico, ainda mais se já há outro sobre isso: http://scriptbrasil.com.br/forum/index.php?showtopic=145627
  16. Você precisará de um banco de dados para armazenar os dados.
  17. Movendo: Outros Assuntos --> Ajax, XML, Javascript, DOM. Imagino que a dúvida esteja na implementação em Javascript, e não PHP. Após o carregamento (depois do código PHP que vai salvar as inf. do arquivo) basta você escrever o seguinte código Javascript na página: onload=function(){ close() }
  18. Peço que evite a postagem de up's conforme a regra 3.8 (ver regras).
  19. Veja se isso ajuda: http://www.caloni.com.br/blog/archives/a-fila-das-threads
  20. Nesse caso você terá que utilizar threads para captar o clique do segundo botão, visto que o programa ficará "paralisado" no while. Depois, basta criar uma variável acessível pelas duas funções e, a cada iterações do loop, verificá-la.
  21. Faça como está no código, usando o typeof. Edit: (25/12/2009) Desculpe a demora pra postar o código, precisei fazer algumas correções (principalmente em relação à codificação). Mas devo postar hoje mais tarde.
  22. Tente algo assim: <a href="port-01_logo_dna.html" target="fundo_logo" onClick="changeLink('port-01_logo_dna_t.html');MM_swapImage('Image50','','images/logo_dna1.jpg',1)"><img height="85" alt="" src="images/box_i01.gif" width="87" border="0" frameborder="0"></a>
×
×
  • Criar Novo...