Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hantaro

Codigo nao retira <script> da pagina

Recommended Posts

O meu problema é que consigo inserir o objeto na pagina mas nao consigo tirar

O codigo abaixo inserir um <script> com os devidos atributos mas no final ele nao consegue retirar, no caso apos chamar a funçao 10 vezes teriamosdez <script> na pagina.

 

Resumindo, o usuario clica no link, chama a funçao, cria o <script> e passa suas propriedades, no final da funçoa o <script> criado é destruido, tanto por questao de codigo limpo, como que por segurança, segue o codigo

 

document.getElementById('id').style.display='block';
var campo=document.getElementById('x').value;
var head=document.getElementsByTagName('head').item(0);
var script = document.createElement('script');
script.setAttribute('src','x.php?campo='+campo);
head.appendChild(script);
document.head.removeChild('script').item(1);

esta .item(1) porque este codigo sera o item(0) e entao o que é inserido item(1)

 

Alguem tem ideia de como fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Naum entendi mt bem o que você quer fazer naum,

 

No caso você ta tentando fazer o q ? um redirect para uma outra pagina ? fazer uma include de um arquivo ?

as vezes tem uma solução mais pratica que fazer o q você ta tentando fazer.

 

Para você poder remover um nó do seu HTML é só você usar mais ou menos assim "objPai.removeChild(objFilho)"

 

 

Exemplo, aplicando no seu caso

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');

//adicionando
head.appendChild(script);

//depois de adicionado vou remover 
head.removeChild(script)

Para funcionar tem que ser elemento filho direto, não pode ser filho de outro elemento.

 

Exemplo

 

<head>
   <script>elemento filho de head</script>
</head>

 

Absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei aqui e so funciona no FF, no iE nao,segue minha explicação

 

Deixa me explicar melhor, tem no meu html um campo input, e ao lado um link de enviar que chama a função, segue o codigo completo do html:

 

<html>
<head>
<title>xXx</title>
<style type="text/css">
#wgf {width:130px;height:26px;_height:30px;padding-top:4px;position:absolute;left:0;top:0;background:#D3D3D3;border:1px solid 

#606060;border-left:none;border-top:none;color:#000000;text-indent:5px;font-weight:bold;display:none;}
</style>
<script type="text/javascript">
function ajax(){
document.getElementById('wgf').style.display='block';
var campo=document.getElementById('a').value;
var head=document.getElementsByTagName('head').item(0);
var script = document.createElement('script');
script.setAttribute('src','x.php?campo='+campo);
script.setAttribute('id','php')
head.appendChild(script);
head.removeChild(script);
}
</script>
</head>
<body>
<br><br><br><input type="text" id="a" /><a href="java script:void(0);" onClick="ajax();">Enviar</a>
<div id="wgf">Carregando...</div>
</body>
</html>

apos clicar em enviar, a <div> oculta vai abrir mostrando, o conteudo dela, que no caso é "Carregando...", esse <script> é

 

inserido na pagina, e seu src passa a ser uma pagina php que recebera o GET campo, vai inserir no BD, e se a inserção

 

retornar TRUE, essa <div> passa a ter o texto "Concluido" e desaparece em 1 segundo, se retornar algum erro, a <div> passa a

 

ter o valor "Erro no servidor" e some com 2 segundo, e se o campo estiver vazio exibe um alerta "O campo esta vazio",

segue abaixo o codigo php

 

<?php
$valor = $_GET['campo'];
if(!empty($valor)){
$conexao = mysql_connect("localhost","root","");
$bd = mysql_select_db("teste");
$sql = mysql_query("UPDATE tabela SET campo='".$valor."' WHERE id = '1'");
if($sql==true){
echo "var status=document.getElementById('wgf');
status.innerHTML='Concluido';
setTimeout(function(){status.style.display='none';status.innerHTML='Carregando...';},1000);";
} else {
echo "var status = document.getElementById('wgf');
status.innerHTML='Erro no Servidor';
status.style.display='block';
setTimeout(function(){status.style.display = 'none';status.innerHTML='Carregando...';},2000);";
}
mysql_close($conexao);
} else {
echo "var status=document.getElementById('wgf');
setTimeout(function(){status.style.display='none';status.innerHTML='Carregando...';alert('Seu campo esta vazio');},500)";
}
?>

Voce pode esta pensando, seria melhor fazer isso com ajax, mas aquele monte de codigo nao daria muito certo pra mim, e usando esse metodo eu vou me aperfeiçoando no javascript para depois aprender ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

Sem dúvidas com ajax é mt mais simples e mais correto de fazer isso,

O ajax em si naum tem mt mistério. ele é apenas alguns códigos engessados onde a maioria é quase uma receita de bolo.

 

Eu tenho uma apostilinha de ajax aqui mt show de bola, sempre encaminho ela as pessoas pq ela mostra o quanto facil é o ajax. Se você estiver interessado eu te passo, dedica algumas 3 hrinhas lendo ela que não vai se arrepender.

 

Caaaaso você naum queira utilizar ajax, mesmo assim preferir estudar isso depois, tem uma solução q eu usava no meu antigo trabalho quando naum conhecia o ajax.

você pode utilizar iframe. você coloca um iframe com 1px de altura e largura entaum você referencia usando document.getElementbyId('iddoiframe').src = pagina.php e no retorno do php você coloca "parent.document.getElementById('id da div de resposta')" .

 

Mas minha dica é, estude o ajax, quando você ver como é que funciona você vai ver o quanto é simples e não tem mistérios.

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

É acho que vo mesmo estudar ajax, porque realmente reload em paginas de interação com o usuario é muito feio.

 

Vlw ai pela dica do iframe, e se tiver como voce colocar ai o link dessa apostila, fico muito agradecido

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

me manda por MP o seu e-mail, de prederencia do Gmail que eu te mando ela por la,

pq ela tem 6mb, ela é interativa. entaum fica meio pesadinha.

 

 

Abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.