Ir para conteúdo
Fórum Script Brasil

Danilo Moraes

Membros
  • Total de itens

    171
  • Registro em

  • Última visita

Tudo que Danilo Moraes postou

  1. Cara, eu não testei aki, mas acho que tu deveria fazer a funcao ser ativada pelo evento onkeypress e a cada vez que o usuario aperta um botao, você usa expressao regular pra substituir R, $, . e , por uma string vazia. Depois tu passa essa sua funcao para mascarar o campo denovo. Tenta isso e depois mostra pra gente no que deu
  2. Qual o problema de usar os metodos do DOM para criar os input mesmo com dados vindos do servidor? Oo Se você quiser criar o input so depois que o servidor responder, pode fazer algo mais ou menos assim: var hidden = document.createElement("hidden"); hidden.setAttribute("name","text_field"); hidden.setAttribute("value",httprequest.resposeText);//se o dado que vem do servidor vai pro atributo value, então coloca o responseText como parametro document.getElementById("teste").appendChild(hidden); Se voce quiser criar os elementos antes de fazer a chamada no servidor e depois so atribuir os valores, mais simples ainda: document.getElementsByName("teste")[0].setAttribute("value",httprequest.responseText); Se mesmo assim o FF não enviar os dados, então voce pode apelar pra um poco de ajax e montar o cabecalho da reguizicao como post e enviar usando o objeto XMLHttpRequest. Se tiver duvidas de como fazer, so fala aew :P Inté
  3. Olha, faltou algumas coisas para eu intender o seu problema. Primeiramente, que ferramenta você usa? Segundo: pra que você quer que mostre o resultado sendo que o objetivo do codigo fonte, é realmente mostrar o codigo fonte? E depois, sim, tem como fazer isso que você quer, mas vai ter que passar por um script que pode ser feito em javascript mesmo. Ai tu usa expressoes regulares pra substitui document.write por texto por exemplo. Explica melhor teu problema que tlvez possamos ajudar melhor T+
  4. Bom, primeiramente o atributo languagem é considerado DEPRECATED ou seja ultrapassado. Depois, tens que tomar os seguintes cuidados: No arquivo .js não podem conter as tags <script>. Depois, para você usar as funcoes, obviamente você tem que estar dentro das tags script. exemplo: <script type="text/javascript" src="arquivo.js" />//esse /> no final e mesma coisa que </script> :P <script type="text/javascript"> //aki que voce usara as funcoes do arquivo.js não pode nem mesmo ser dentro da tag script que você ta usando pra chamar o arquivo.js </script> Se depois de testar isso, ainda estiver dando erro, posta aew o codigo que esta dando problema. T+
  5. Amigos, para aumentar a tristeza do nosso colega r0ltu, mais uma maneira (a mais facil de todas) de copiar as imagens do seu site: Para Firefox = Menu editar -> Preferencias -> Conteudo -> Permitir Javascript. tsrsrsrsrsrsr Que tal essa? ^^ Bom, como os outros já falaram, não tem como esconder informacoes que chegam no cliente. O que você pode fazer, é dificultar a leitura delas, mas sempre há uma maneira de quebrar a seguranca. Para que não leiam o meu codigo javascript, eu criei umas funcoes que trazem todo o codigo JS do servidor, passam como parametro para uma funcao eval e depois descarta esse testo. A unica maneira que eu conheco para desbloquear isso, é em vez de colocar o que recebe do servidor como parametro da funcao eval, printar na tela com o metodo write(). ^^ Ta vendo? Nunca tem como esconde 100%, mas tem como dificulta. não sei se sua vontade de esconde as imagens é tão grande assim, mas existe uma maneira de dificultar a leitura do caminho da imagem, mas já aviso que é meio gambiarra ^^ Obs: a uns 50min atras, quando eu estava fazendo umas funcoes para tentar cifrar a url das imagens, me dei de conta que a ideia que eu tinha, não deu muito certo porque no final, eu decifrava o codigo da url e ele era adicionado no html... infelizmente :( Se tivece uma maneira de mostrar imagens nos browsers sem ter que usar codigo html, apenas javascript... então so estou avisando que daqui pra frente é apenas um tutorial bobo que acabei de fazer porque tava com sono e tedio, mas já da pra ter uma nocao e criptologia heheheh Desculpe não poder ajudar... :S A logica ta em, pra cada imagem que tu quer inserir, tu chama uma funcao naquela parte do codigo por exemplo: imagem(5). Nesse caso, o parametro 5 seria a posicao onde esta o endereco da imagem. Ai tu me pergunta: Mas ai o cara não tem apenas que ir la onde esta setada essa array e copia o codigo? AHAA ai que esta a jogada: você codifica o endereco e mostra ali apenas o "criptograma" (para maiores detalhes sobre cifras e algoritmos criptograficos vide o site NUMABOA/criptografia). #Ate aqui, o que eu falei estaria certo se não foce pelo fato de que para carregar uma imagem, o codigo tem que estar escrito de mneira certa... então ele realmente fica cifrado, mas quando a pagina carrega, as funcoes que fiz decifram e colocam a url certa na imagem denovo... :(# Existem varias maneiras de crifrar uma frase tipo esse endereco da imagem e as mais faceis, são as cifras de substituicao. Cifras de substituicao são aquelas que substituem uma letra ou caracter por outro pré definido (tem como substituir por outro que não foi pre definido, isso se chama cifra de substituicao polialfabetica mas não vamos nos aprofundar nisso...). então você poderia implementar um algoritmo para cifrar os enderecos. Um exemplo bem simples que posso te dizer agora, seria passar os caracteres do link para os seus respectivos codigos da tabela ASCII e isso se faz com o metodo charCodeAt. Aí tu faz assim: function cifra(textoClaro) {//texto claro e o texto legivel, que ainda não foi cifrado var criptograma="";//criptograma e o texto já cifrado :P for(i=0; i<textoClaro.length; i++){//vou passar por cada letra da string textoClaro criptograma += textoClaro.charCodeAt(i)+".";/*aki estou atribuindo a variavel criptograma o codigo ASCII de cada caracter. Repara no +"." isso to fazendo pra poder descriptografar depois, ai eu uso o metodo spli() e separo pelo marcador de .(ponto)*/ } return criptograma;//quando acaba o loop, apenas retorno a url ou frase já cifrada } Bom, esse metodo eu acabei de fazer e já testei e funciona certinho. Ele você não vai por na mesma pagina que vai ter as imagens, esse codigo vai ser apenas usado como ferramenta para gerar as urls cifradas. Com um pouco mais de trabalho, eu fiz isso daqui: <script> function cifra(textoClaro) { var criptograma=""; for(i=0; i<textoClaro.length; i++){ criptograma += textoClaro.charCodeAt(i)+"."; } return criptograma; } window.onload = function(){ while(true) { var textoClaro = prompt("digite o texto claro"); if(textoClaro == null) break; alert(cifra(textoClaro)); } } </script> Apenas cole esse codigo em uma pagina qualquer e voce já vi ter uma ferramenta para ir cifrando suas URLs. Aki esta um exemplo da url http://www.google.com cifrada: 104.116.116.112.58.47.47.119.119.119.46.103.111.111.103.108.101.46.99.111.109. #Eu ia continuar meu post daqui, mas como já perdi a vontade porque não deu muito certo, vou apenas mostrar o codigo que eu fiz aki e se tiverem duvidas, so perguntar que eu explico. ^^# <script> function cifra(textoClaro) { var criptograma=""; for(i=0; i<textoClaro.length; i++){ criptograma += textoClaro.charCodeAt(i)+"."; } return criptograma; } function decifra(criptograma) { var criptograma = criptograma.split("."); var textoClaro=""; for(i=0; i<criptograma.length-1; i++) {//isso porque o ultimo caractere de uma cadeia de caracteres sempre é um caractere nulo: textoClaro += String.fromCharCode(criptograma[i]); } return textoClaro; } function cifrador() { while(true) { var textoClaro = prompt("digite o texto claro"); if(textoClaro == null) break; alert(cifra(textoClaro)); } } function decifrador() { while(true) { var criptograma = prompt("digite o criptograma"); if(criptograma == null) break; alert(decifra(criptograma)); } } function imagens() { var imgs = document.getElementsByTagName("img"); for(i=0; i<imgs.length; i++) { imgs[i].src = decifra(imgs[i].getAttribute("src")); } } window.onload = imagens; </script> <input type="button" onclick="cifrador()" value="cifrador"> <input type="button" onclick="decifrador()" value="decifrador"> <img src="105.109.97.103.101.109.46.106.112.103." /><!--imagem.jpg - podem usar o decifrador que eu fiz ali pra conferir o nome da imgem :P e não esquecam de substituir esse criptograma pelo equivalente ao nome da sua imagem--> Pelo menos eu me diverti enquanto fazia essas ferramentazinhas, mesmo que por pouco tempo :( Olha cara, andei dando uma fucada na net, e como eu disse antes, javascript tu so pode atrapalhar, mas não esconder 100%. Agora o HTML, So da pra atrapalhar se for incher de comentarios o codigo, porque senao, não tem como... =| Issae, acho ate que seria uma boa trocar esse mini tuto para um tópico de criptografia, não? :P T+
  6. Tipo, vou dar uma esplicada so pra intenderem o porque que fica travado. Um erro que muitos cometem, é dizer que ajax faz a mesma coisa que threads. Resumindo, thread é processamento paralelo, onde você faz 2 coisas ao mesmo tempo e o ajax não usa processamento paralelo e sim processamento assincrono. O que significa o assincrono do ajax? SImples: Ele faz um teste para ver qual codigo/funcao executara mais rapido primeiro e então executa ele primeiro. Por isso da a impressao de que o objeto XMLHttpRequest, faz 2 coisas ao mesmo tempo, porque ele sempre faz primeiro akilo que e mais rapido. Bom, resumao de tudo isso é que javascript não trabalha com threads, sendo assim, ajax tmb não já que ajax é puro javascript de maneira assincrona(não paralela :P). então, o for é uma funcao (na verdade é uma construcao da linguagem, mas vamos deichar isso de lado :D), e por ser uma funcao, ela é considerada num escopo geral como um unico codigo. Se o XMLHttpRequest tivece que escolher qual executar primeiro, ele testaria se a funcao vai terminar mais rapido ou não. Mas assim, não se faz testes consecutivos dessa maneira pra nada! O principal erro que os desenvolvedores de jogos iniciantes cometem, é fazer as animacoes dos personagens, na velocidade que o processador consegue seguir. Se o processador for deichado livre para percorrer um loop, ele vai ficar naquilo ate o loop terminar e vai deichar de fazer o resto. Como javascript não trabalha com processamento paralelo, assim que o interpretador entrar naquele loop, so vai fazer outra coisa quando tiver saido do loop. Mas agora, me respondam uma coisa: o que exatamente esse sleep deveria fazer que já não faz? O sleep do php tmb trava tudo ate que o tempo passado como parametro termine. A desvantagem é que todo o resto fica travado mas se levar em consideracao de que javascript não tem threads e que mesmo que não fique travado, ele não podera fazer nada, então essa funcao é bem apropriada. No que exatamente tu precisa usar uma funcao sleep?
  7. tipo, eu não consegui passar como parametro o objeto evento para capturar informacoes do evento onload. Sera que tem mesmo como fazer isso?
  8. Pior que é... Mas eu tava lendo num e-book, que quando você atribui o evento inline, você pode passar literalmente o objeto event como parametro, mais ou menos assim: <a href="#" onclick="funcao(event)">link</a> Bom, agora o esquema, é descobrir como passar parametro na hora de tribuir funcoes... tipo: obj.onclick = funcao;//se tivece como fazer assim: obj.onclick = funcao(event)... obj.onclick(event);//ou assim.... =/ Bom, amanha vou fazer a funcao para resolver esse problema ai. Na verdade, o metodo que eu bolei e quase igual ao do Jonathan ^^ Amanha posto aew, to meio ocupado agora :S T+
  9. Olha pessoal, acredito que ninguém intendeu minha pergunta, então vamos la. Eu já achei uma solucao alternativa para resolver meu problema e vou esperar ate amanha para posta-la. Se alguém conseguir resolver meu problema, ficarei extremamente agradecido!! Bom, primeiramente Jonathan Queiroz, Ali nos posts anteriores, eu acabei escrevendo errado o nome do metodo, mas mesmo colocando o onclick() o "erro" ainda persiste. Vamos a uma rapida introducao: Bom, existe no javascript um objeto chamado event (com "e" minusculo) que armazena as propriedades de um determinado objeto. Esse objeto event so é criado quano um evento é disparado. Bom, aki segue um simples exemplo da utilizacao desse objeto event: <script type="text/javascript"> function mostraPropriedade(e) {//esse parametro, vai ser preenchido automaticamente quando o evento for disparado alert(e.target.getAttribute("href"));//esse exemplo so vai funcionar no firefox porque no IE, o objeto event é criado em window.event } //para que o objeto event seja passado como parametro para a funcao, precisamos atribuir a funcao ao evento onclick de um elemento html window.onload = function(){//colocamos tudo dentro desse evento porque quando o interpretador ler este codigo, o codigo html ainda não tera sido criado então ele não vai //conseguir achar o elemento "meulink" a não ser que o codigo html já tenha sido carregado var link = document.getElementById("meulink"); link.onclick = mostraPropriedade;//aki não colocamos os "()" porque queremos atribuir a funcao em si ao evento onclick e não o resultado da funcao... Isso tem a ver com //ponteiros :P } <script> <body> <a href="#meuHref" id="meulink">clique</a> </body> Bom, o codigo esta bem comentado, então e so testar. vocês vao ver que vai aparecer um alert com o conteudo #meuHref... Como isso aconteceu? Quando o usuario clicou no link, foi disparado o evento onclick que estava atrelado a ele. Esse evento chamou a funcao mostraPropriedade(). Quando essa funcao foi chamada, foi passado como parametro (pelo proprio interpretador js) um objeto chamado: event. Esse objeto é criado quando um evento e disparado e ele contem as principais propriedades do elemento em questao. Por exemplo: function mostraPropriedade(e) {//no lugar desse "e" poderia ser usado qualquer outro nome alert(e.type)//vai retornar a string: click já que o tipo do evento é click. alert(e)//vai retornar: [object MouseEvent] já que faz mensao á origem do evento... alert(e.target)//no FF vai retornar a principal propriedade do elemento. Nesse caso, vai retornar o href contendo todo o caminho ate a pagina atual. Exemplo: file:///home/danilom/Desktop/testeEventos.html#meulink alert(window.event.srcElement)//mesma coisa que o e.target, so que é a versao para o nosso querido IEca :P } Bom, como puderam ver, esse objeto event, contem varias propriedades do elemento em questao. Agora vamos tentar de uma maneira diferente... Em vez de o usuario disparar o evento clicando no link, vamos disparar o evento atraves do metodo onclick(): <script type="text/javascript"> function mostraPropriedade(e) { alert(e); } window.onload = function(){ var link = document.getElementById("meulink"); link.onclick = mostraPropriedade; link.onclick(); } <script> <body> <a href="#meuHref" id="meulink">clique</a> </body> Se executarem esse exemplo, quando a pagina carregar, vai aparecer um alert com a string: Undefined... Isso significa que o objeto event não foi criado. Com isso cheguei a conclusao de que eventos disparados via metodos, não criam o objeto event :( Agora depois desse discuro (:D), alguém sabe como eu faco para disparar eventos via metodo onclick() e ainda criar e enviar o objeto event como parametro? Bom, eu já achei um solucao alternativa para esse problema, mas ela não meche com o objeto event, que é exatamente o que eu não sei como fazer... So não posto esse minha alternativa porque não quero que esse tópico seja dado como RESOLVIDO antes que alguém me diga alguma coisa que sabe ^^ Amanha ou depois, venho aki e posto minha solucao... Mas por favor, alguém tem ideia de como fazer o que eu quero? Thanks :P
  10. Esse post foi criado sem querer :S E não sei como deletalo :( Desculpem o flood :S
  11. Olha, o script acima não funcionou porque não estava entre as tags <script> e a criacao da variavel link, estava fora da funcao onload. então o link tecnicamente ainda não tinha sido criado. E a proposito, existe tanto o evento onclick quanto o metodo onclick() que dispara o evento. <script> function funcao(e) { alert(e.target.getAttribute("id")); } window.onload = function() { var link = document.getElementById("link"); link.onclick = funcao; link.onClick(); } </script> <a href="#" id="link">link</a> Testa esse ai agora... Quando a pagina carrega, ele não mostra o alert porque o objeto "e" não existe, mas quando o usuario dispara o evento, ele passa a existir... Preciso que esse objeto event seja criado mesmo quando eu executo o metodo onclick(). alguém sabe como?
  12. Pessoal, estou com um problema: Preciso disparar o evento de um link com javascript e enviar junto o objeto event desse link... tipo: function funcao(e) { alert(e.target.getAttribute("id")); } var link = document.getElementById("link"); window.onload = function() { link.onclick = funcao; link.onClick(); } <a href="#" id="link">link</a> Bom, quando a pagina carrega, retorna o erro de que "e" não é definido. já quando eu clico no link, o alert mostra o id: link. Isso significa que o metodo onclick() não esta enviando o objeto event, referente ao link como parametro. alguém sabe como resolver isso? Obrigado
  13. So esconde/mostra o primeiro de todos? O primeiro o que de todos?
  14. Resuminho rapido: setInterval() vai ficar executando a funcao que tu determinar como parametro. já a setTimout() vai esperar um determinado tempo (em milisegundos) e depois executar uma unica vez a sua funcao. T+
  15. Olha neo_soro, uma coisa e certa: sempre existe 1000 maneiras de se fazer a mesma coisa na programacao! hehehehe Bom, aki vai uma possivel maneira: 1 passo- Pensa assim, a linguagem no servidor, não pode dar um refresh na pagina... Esse refresh tem que vir do cliente mesmo, ou seja, tem que estar configurado para dar o refresh no proprio site que esta no cliente. Partindo dessa verdade, já sabemos que o refresh deve ser configurado pelo javascript ou qualquer linguagem que tu vá usar no cliente. 2 passo- Tu tem que escolher como o refresh vai acontecer: Vai ser um evento que vai ativalo? exemplo.. quando o usuario clicar no link caixa de entrada, ou quando o usuario mecher o mouse na tela, ou quando o usuario apertar uma tecla qualquer. Vai ser automatico esse refresh> exemplo... você pode configurar uma tag META pra dar refresh num iframe por exemplo(obviamente não faras isso porque tu já disse que quer usar ajax). Tu pode tambem usar uma funcao no javascript que sempre de tempos em tempos vai fazer uma requisicao ao servidor. Eu obviamente escolho a segunda opcao :P Aqui vai uma maneira de fazer: Crie uma funcao que vai fazer o request no servidor. Exemplo: //aki você instancia o objeto XMLHttpRequest() ou ActiveXObject(), dependendo do browser. Nesse caso instanciei o objeto com o nome de httprequest function checaEmails(pagina, idElemento) { var elemento = document.getElementById(idElemento);//estou pegando o elemento pelo id que foi passado como parametro da funcao. httprequest.open("get", pagina, true);//aki você vai apenas abrir uma requisicao, para a pagina que for determinada como parametro da funcao. httprequest.onreadystatechange = function() { if(httprequest.readyState == 4){ if(elemento.innerHTML != httprequest.responseText){//se o conteudo do elemento onde vao ser mostrados os emails for diferente do que veio do servidor então insere o conteudo no elemento "div" elemento.innerHTML = httprequest.responseText; } } } } Esse e um codigo bem chulo, porque estou com sono agora e sem tempo de fazer algo melhor e testar pra ti... Mas basicamente, no cliente seria isso... você testa se o conteudo que vem do servidor e igual ao que já esta na pagina. Se for diferente, ele insere o novo conteudo vindo do servidor. Isso basicamente checa se tem novos email. É uma maneira que eu acredito ser bem errada, mas e mais pra fins didaticos... :P Se eu foce fazer, obviamente faria testes por exemplo do tipo de dado que esta vindo do servidor, e receberia os dados via XML ou JSON... Bom, agora que tu já tem uma funcao que checa por conteudo diferente no servidor, basta apenas fazer com que essa funcao seja chamada de tempos em tempos. Eu faria de 30 em 30s mas ai depende de como você quer que fique. Para fazer essa requisicao de tempo em tempo, você pode usar o metodo setInterval(). Ele funciona basicamente assim: setInterval(funcao(), tempo em ms); Essa funcao vai executar uma funcao infinitamente a cada periodo indicado ali. Para validar se existe novos emails, criamos aquela funcao checaEmails() e para chamala a cada 30s, poderiamos fazer assim: setInterval(checaEmails("pagina.php", "divConteudo"), 30000); Onde 1000milisegundos = 1s então 30s = 30*1000ms = 30000 :P Bom, agora o ultimo passo e saber aonde colocar essa funcao... Ela pode ser largada em qualquer parte do codigo, mas aconselho a colocala para iniciar pelo evento onload, porque assim temos serteza de que so checaremos por novos emails assim que a pagina estiver toda carregada. Uma maneira de se fazer é: <body onload="setInterval(setInterval(checaEmails("pagina.php", "divConteudo"), 30000)"> Obviamente esse é um codigo obstrutivo, ou seja, que esta preso ao HTML. Se preferir fazer um codigo mais flexivel, procure pelo google pelo metodo addEventListener(). Olha, não sei se foi de grande ajuda este post, não dei a solucao pronta, dei apenas uma ideia de como fazer. Se tiver mais alguma duvida, posta aki que tento ajudar de forma melhor. T+ Edit: Esqueci de falar, as conexoes não ficam abertas o tempo todo. Funciona assim: você faz um request ao servidor. Os dados serao processados e o servidor vai enviando por partes o codigo. Quando o codigo chegou por completo, a conexao é "fechada". Fechada no sentido de que não vai mais trafegar nenhum dado pela rede. Porem, aquele request que você abriu com o metodo httprequest.open() continua aberto. Ele so vai ser fechado quando você chamar denovo a funcao. Daí, os dados do request serao refeitos e reenviados. Mas acredito que sua pergunta era sobre o fato de continuar ocupando banda. Se for isso fique tranquilo porque a resposta é não. :D
  16. Nunca tinha visto esse codigo, ele é uma implementacao cross-browser?
  17. Olja, pelo que intendi, você quer pegar dados que estao numa pagina no servidor via ajax, mas isso so esta dando certo com o IE, isso? Bom, se for por isso, acredito que o problema esteja na hora de instanciar o objeto que faz as requisicoes ao servidor. No IE, o objeto instanciado, chama-se: ActiveXObject() e no FF chama-se XMLHttpRequest(). Se for esse mesmo o problema, tem varios tutoriais na net ensinando como instanciar o objeto XMLHttpRequest de maneira cross-browser(funciona em todos os browsers). Era esse mesmo o problema?
  18. Olha, eu não achei nenhum tutorial ensinando como resolver o meu problema, mas depois de inumeros testes, descobri uma maneira de resolver meu problema. Primeiro vou explicar melhor o problema. Eu estava trasendo do servidor, um codigo HTML, ou melhor dizendo, uma pagina. A pagina que eu estava trazendo, era essa que mostrei ali encima. Essa pagina iria ser insirida dentro do div conteudo na pagina onde estava o codigo ajax. Ate ai normal, todo bom tutorial de ajax ensina isso bem detalhadamente. O meu problema estava que eu não conseguia executar funcoes que eram criadas nas paginas que vinham do servidor. Por exemplo: Essa pagina que mostrei no post anterior, eu criava uma funcao nas tags <script></script>, a funcao showOnOff() que chama a funcao alert passando como parametro a string "teste". Agora, reparem nesse link: <li class="inativo"><a href="java script: showOnOff()">Pesquisa Básicas</a></li> não tem nada de mais nele, afinal ele apenas esta chamando a funcao showOnOff(). E se eu chamar essa pagina no navegador, quando eu clicar no link vai aparecer o alert mostrando a mensagem: teste. Agora, se eu chamar essa pagina pelo AJAX usando a propriedade responseText e inserir essa pagina, todo o conteudo HTML dela sera mostrado normalmente, mas a funcao showOnOff(), não vai funcionar. Se eu clicar no link, vai me retornar o erro de que a funcao showOnOff() não foi definida. Depois de horas pensando e procurando uma solucao na internet, que por sinal não adiantou nada, tive a ideia de fazer alguns testes. Primeiro pensei que a funcao não estava sendo criada, porque ela não estava registrada no indice que o DOM cria de todos os elementos. então quando a pagina vinha do servidor, eu selecionava a tag <script> e dava um:document.body.appendChild(script) e nada adiantava. Depois pensei que foce porque o codigo javascript que vinha do servidor, era interpretado como um TextNode e não como um text/javascript (o que não tem nada a ver ^^) então fazendo alguns teste, descobri que ate os codigos javascript que estao na pagina, são todos do tipo TextNode. Quando eu estava quase desistindo, me veio na mente a seguinte ideia: Se o erro esta disendo que a funcao não foi definida, então quer dizer que o interpretador javascript do browser não leu aquele trecho de código e isso faz sentido já que no AJAX, a propriedade responseText, recebe o conteudo apenas como texto, passando (no meu caso) para a pagina onde o browser iria varrer o novo conteudo inserido e atualizar o indice do DOM. então qual era a solucao? Fazer com que o interpretador javascript do browser le-se o seguinte trecho: function showOnOff() { alert('teste') } Descoberto o problema, agora apenas temos que achar a maneira de solucionalo! ^^ Bom, eu já sabia que no PHP tem uma funcao chamada eval(),que executa os codigos PHP como string. Exemplo: 2+2 = 4; //simples, uma operacao de matematica "2"+"2" = "22";//aki eu estou concatenando duas strings "2+2" = "2+2"//a string "2+2" é apenas uma string :P já usando a funcao eval() ficaria assim: eval("2+2") //retorna 4, ou seja, executou o codigo como uma string. então procurei pela net pra ver se tinha uma funcao similar para javascript e para minha surpresa, a funcao se chamava eval mesmo ^^ Para que você possa intender melhor o poder da funcao(melhor chamar de metodo, já que metodo em javascript e toda funcao predefinida pela linguagem, nativa...) eval(), teste o seguinte codigo: <script type="text/javascript"> eval("function showOnOff(){alert("teste")} showOnOff()") </script> Nesse trecho de codigo, criamos a funcao showOnOff e depois camamos ela, tudo como uma string. E o que acontece se tu rodar esse codigo? Um alert com a mensagem Teste vai aparecer. então o meu problema estava resolvido, so tinha que passar a funcao eval no conteudo dentro da tag script vinda do servidor. O codigo final ficou mais ou menos assim: //coloque aki toda a parte de ajax. Vou mostrar apenas a parte de receber os dados do servidor var conteudo = document.GetElementById("conteudo");//pego o elemento div onde a resposta do servidor sera inserida conteudo.innerHTML = XMLHttpRequest.resposeText;//insiro no div o que vem do servidor var tagScript = conteudo.getElementsByTagName("script");//pego o elemento script dentro do div conteudo eval(tagString[0].innerHTML);//passo como parametro para o metodo eval, o conteudo da primeira tag script dentro do div conteudo. Com isso, o conteudo javascript foi lido pelo interpretador javascript do navegar e já esta na memoria, prontinho para ser usado! hehehehe No meu caso, so vou ter apenas uma tag script que vem do servidor, mas se você tiver mais que uma pode implementar um loop para percorrer todas as tag script da pagina, algo mais ou menos assim: for(i=0; i<tagString.length; i++){ eval(tagString[i].innerHTML) } Depois desse texto gigante, espero que tenha esclarecido a duvida de alguém com o mesmo problema que eu. heheheh Sofri pra descobri, mas no final a alegria de resolver o problema compensa ^^ Qualquer coisa, meu email é: moraesdno@gmail.com Duvidas so chamar T+
  19. Olá pessoal. Estou com uma duvida: Estou desenvolvendo um sistema em ajax onde ele faz requests a paginas no servidor. As paginas estao como .php para que eu possa setar os headers e colocar apenas o conteudo, sem ter que setar as tags body, head e tals. Na pagina index, onde estao setadas as funcoes de ajax e tals, eu tenho o div conteudo onde tudo e colocado quando vem do sevidor. Tenho uma pagina que esta vindo do servidor, que quando eu clico em alguns links dela, eu gostaria que mostrace alguns divs e esconde outros. Detalhe: os divs estao na propria pagina .php que vem do servidor. Mas o problema, é que o codigo javascript que esta nessas paginas não executa. um exemplo dessa pagina: <?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?> <script type="text/javascript"> function showOnOff() { alert('teste') } </script> <div id="submenu"> <ul> <li class="inativo"><a href="java script: showOnOff()">Pesquisa Básicas</a></li> <li class="inativo"><a href="#pesquisaavancada">Pesquisa Avançada</a></li> <li class="inativo"><a href="#tiposdeleis">Tipos de Leis</a></li> </ul> </div> <div id="pesquisabasica" class="hidden"> <p class="label"> Pesquisar:</p> <input type="text" id="pesquisa" class="text" size="30" /> </div> <div id="pesquisaavancada" class="hidden"> </div> <div id="tiposdeleis" class="hidden"> </div> <div id="submitreset"> <input type="button" id="resetbasica" class="botao" value="Redefinir" /> <input type="submit" id="submit" class="botao" value="Pesquisar" /> </div> quando eu clico no primeiro link, no console de erros fo FF aparece que a funcao showOnOff não esta definida. A solucao que achei, foi definir a funcao na propria pagina index. Mas alguém saberia me dizer porque que retorna o erro de funcao indefinida se ela esta setada ali?
  20. Pessoal, eu tive durante um tempo, problemas para enviar email utilizando o php. Depois de muito procurar, descobri a classe phpMailer. Ate agora, ela tem me sido muito util, enviando emails e ate anexos do tipo .txt. Mas quando eu tento enviar anexos do tipo jpg, mesmo uma foto bem pequena, ele não executa o script e nem retorna erro, simplesmente diz que parou a execucao porque demorou mais que 30 segundos. Segue o codigo abaxo: <?php ini_set('include_path','.:./PHPMailer_v5.0.0/'); // Diz que o código está na pasta raiz /phpmailer/ require("PHPMailer_v5.0.0/class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); // evia por SMTP $mail->Host = "smtp.mail.yahoo.com"; // SMTP servers $mail->SMTPAuth = true; // Caso o servidor SMTP precise de autenticação $mail->Username = "moraesdno@yahoo.com.br"; // SMTP username $mail->Password = "minhasenha"; // SMTP password $mail->From = "moraesdno@yahoo.com.br"; // From $mail->FromName = "Danilo Moraes"; // Nome de quem envia o email $mail->AddAddress("moraesdno@gmail.com","Danilo Moraes"); // Email e nome de quem receberá //$mail->AddReplyTo("info@site.com","Information"); //Responder //$mail->AddCC("info@site.com";"Nome"); //Com cópia //$mail->AddBCC("info@site.com";"Nome"); //Com cópia oculta $mail->WordWrap = 50; // Definir quebra de linha //$mail->AddAttachment("foto.jpg", "novaFoto.jpg"); // O script deveria pegar o arquivo foto e renomear para novaFoto e enviar como anexo. Esta comentado porque não funciona $mail->AddAttachment("danilo.txt", "new.txt"); // Anexo 2 esse funciona certinho já que é um texto $mail->IsHTML(true); // Enviar como HTML $mail->Subject = "Here is the subject"; // Assunto $mail->Body = "This is the <b>HTML body</b><BR>\"; //Corpo da mensagem caso seja HTML $mail->AltBody = "This is the text-only body"; //PlainText, para caso quem receber o email não aceite o corpo HTML if(!$mail->Send()) // Envia o email { echo "Message was not sent <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Message has been sent"; ?> alguém sabe o que está acontecendo? Estou preisando disso porque estou desenvolvendo um webgame. Falando em webgame, eu baixei alguns prontos aki. Por enquanto, já fiz um funcionar: -Voided Alliance, Copyright Auburnflame Games. Apenas tive que pegar o dump que ele disponibiliza, ou seja, um arquivo.sql e importar para o mysql. Joguinho bem simplesinho mas que ajuda pra estudar algumas partes do codigo. Estou desenvolvendo o meu proprio e se voces puderem olhar a perugnta que fiz neste forum e responder aki: forum.arenaig.ig.com.br. então pessoal, por favor me ajudem. alguém sabe qual o problema que esta dando com o envio de jpg? já tentei enviar arquivos .zip tmb mas não funciona da mesma maneira! Todos os scripts que já procurei na net, mostram isso que fiz logo acima. Danilo Moraes
×
×
  • Criar Novo...