Ir para conteúdo

POWERED BY:

Arquivado

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

andreia_sp

[Resolvido] script dentro de div no IE nao funciona

Recommended Posts

ha alguma forma de funcionar no IE tags scripts dentro de uma DIV (container) ?

vou explicar melhor: tenho uma pagina que chama um ajax, dentro deste arquivo (chamado por ajax) contem scripts. Porem para funcionar é necessario fazer uma gambiarrinha, que faço igual postado neste topico (http://forum.imasters.com.br/topic/264642-executar-funcoes-js-em-paginas-carregadas-com-ajax/), mas no maledeto do IE nao funciona. Vou postar o codigo pra ficar mais facil de visualizar:

 

ajax_teste.js

var xmlHttp

function loadAjax(url, local)
{
xmlHttp=GetXmlHttpObject();

if (xmlHttp==null)
{
	alert ("Este browser não suporta HTTP Request")
	return
}

xmlHttp.onreadystatechange=function()
{
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById(local).innerHTML = xmlHttp.responseText;
		replaceAjax(local);
	}
}

xmlHttp.open("POST",url,true)	
xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
xmlHttp.setRequestHeader("Pragma", "no-cache");	
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(null)
}


function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
	objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
	objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

function replaceAjax(local) 
{

var conteudo = document.getElementById(local);
var conteudo = document.getElementById("container");
var newElement = document.createElement("script");
var scripts = conteudo.getElementsByTagName("script");
var containerScript = "";


for (var i = 0; i < scripts.length; i++) {
	containerScript += scripts[i].innerHTML + "\r\n";
}

newElement.text = containerScript;
conteudo.appendChild(newElement);


}

 

teste1.html

<script type="text/javascript" src="ajax_teste.js"></script>

<div id="container"></div>
<a href="#" onclick="loadAjax('teste2.html','container')">ajax</a>

 

teste2.html

<script>
alert('oi');

</script>

lalalala

 

no FF funciona: retorna o alert e o texto

mas no IE: retorna apenas o texto

 

alguem tem alguma ideia? eu jah tentei de tudo mas sinceramente nao consigo ver alguma solução

ps.: IE 8

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara Andreia,

 

Porque não uma simples função com jquery?

Esqueça o ajax_teste.js. E use o código seguinte no teste1.html:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script language="javascript">
function loadContent(elementSelector, sourceUrl) {
$(elementSelector).load(sourceUrl);
}
</script>

<div id="container"></div>
<a href="#" onclick="loadContent('#container', 'teste2.html')">ajax</a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

no primeiro teste funcionou =)

abusando pouco mais, como faria com parametros em post ?? é que eu nao manjo mto de jQuery.

 

obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

teste1.html:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script language="javascript">
function loadContent(local, pagina) {
$.post(pagina, function(data) {
	$(local).html(data);
});
}
</script>

<div id="container"></div>
<a href="#" onclick="loadContent('#container', 'teste2.html')">ajax</a>

Daí pega via post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser por um terceiro parâmetro.

Exemplo:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script language="javascript">
function loadContent(local, pagina, parametros) {
       $.post(pagina, parametros, function(data) {
               $(local).html(data);
       });
}
</script>

<div id="container"></div>
<a href="#" onclick="loadContent('#container', 'teste2.html', '{ nome: Andreia, local: imasters }')">ajax</a>

Os parâmetros devem ser no formato jsonencode.

 

 

Se quiser, você ainda pode enviar um formulário inteiro de uma vez:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script language="javascript">
function loadContent(local, pagina, parametros) {
       $.post(pagina, parametros, function(data) {
               $(local).html(data);
       });
}
</script>

<div id="container"></div>
<a href="#" onclick="loadContent('#container', 'teste2.html', '$("#id_do_formulario").serialize()')">ajax</a>

Toda a documentação da função você encontra aqui: http://api.jquery.com/jQuery.post/

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.