Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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)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");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
no primeiro teste funcionou =)
abusando pouco mais, como faria com parametros em post ?? é que eu nao manjo mto de jQuery.
obrigada!
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.
mas como vou passar as variaveis na função ? 3º parametro ?
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/
obrigadao Leonardo =)
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: