Cardon Postado Maio 15, 2009 Denunciar Share Postado Maio 15, 2009 boa noite amigosestou com um problema e estou quebrando minha cabeça o dia todoo problema se agrava quando não posso alterar a estrutura do htmlou seja, não posso alterar nada manualment no body por exemplominha dúvida é como criar um script para ativar uma function que criei apos o carregamento total da páginaou seja quando todos os tags html, css e js externos forem todos aplicados e carregados a tal função ser ativada.obrigado desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Maio 17, 2009 Denunciar Share Postado Maio 17, 2009 O ideal seria que você pudesse modificar a estrutura da página.Mas você tem acesso aos arquivos CSS ?Se sim, tente definir a página como invisível inicialmentebody {visibility:hidden} No javascript você utilizaria o evento onload para saber se a página foi carregada e deixá-la visível novamente onload=function(){ document.body.style.visibility="visible" } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cardon Postado Maio 18, 2009 Autor Denunciar Share Postado Maio 18, 2009 Jonathan Queiroz, muito obrigado mesmo por ter respondidomas já fiz isso.com hacks no jse alterando algumas coisas no head limitado que tenho(onde posso chamar os meus css e js's)mas fica dando erroe também se eu colocar onload=function(){ document.body.style.visibility="visible" } vai carregar apenas depois do html terminar porém tem ainda que carregar todo o js, que está cheio de hack, ou seja, alterações no html original. um exemplo: tenho uma div na página onde o conteudo quero trocar por um swf que criei, o código é: //função que troca a div ou qualquer componente a partir do id function swf(tamx,tamy,banner,onde){ if (swfobject.hasFlashPlayerVersion("6.0.0")) { var fn = function() { var att = { data:banner, width:tamx, height:tamy }; var par = { menu:"false",wmode:"transparent",allowScriptAccess:"always",allowFullScreen:"false",quality:"high",bgcolor:"#ffffff" }; var id = onde; var myObject = swfobject.createSWF(att, par, id); }; swfobject.addDomLoadEvent(fn); } } //como colocar a mesma para funcionar swf(200,123,"swf/meu_flash.swf","id_da_div");mas!!!para o js executar o html tem que carregar primeiro porque primeiro precisa existir a div com o respectivo iddepois o js tem como substituir.o que quero é o site só aparecer depois que o js substitua tudo o que tiver que substituirobrigado mais uma vez! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cardon Postado Maio 18, 2009 Autor Denunciar Share Postado Maio 18, 2009 conseguifazer de um modo mais compactocom o codigo css#principal{ display: none; } e js if(document.readyState){ document.onreadystatechange=checkstate; }else if (document.addEventListener){ document.addEventListener("DOMContentLoaded", saydone, false); } function checkstate(){ if (document.readyState=="complete" ||document.readyState=="complete"){ document.getElementById("principal").style.display="block"; } } function saydone(){ document.getElementById("principal").style.display="block"; }tudo perfeito no IEporém no mozila a div em quetão fica branca não mostrando o background da div geral Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Maio 18, 2009 Denunciar Share Postado Maio 18, 2009 Tente verificar o valor da variável document.readyState no mozilla e verifique se realmente fica como "complete" ao carregar a página Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cardon Postado Maio 18, 2009 Autor Denunciar Share Postado Maio 18, 2009 Fica simdeu tudo certocoloquei uns alerts pra confirmar anteriormente.porém já resolvi o problema. troquei issofunction saydone(){ document.getElementById("principal").style.display="block"; } por isso function saydone(){ document.getElementById("principal").style.display="table-row"; }apenas substitui o display="block", por display="table-row"funcionou perfeitamentemas o que mais me irrita é não esta funcionando no ópera ainda nem no chrome e safari.alguém saberia como funciona o "document.readyState" nesses outros browser?obrigado desde já!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Maio 18, 2009 Denunciar Share Postado Maio 18, 2009 Mas não entendi porque não poderia usar o evento onloadNão poderia fazer assim ?onload=saydone Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cardon Postado Maio 18, 2009 Autor Denunciar Share Postado Maio 18, 2009 porque há mais coisas nesse saydoneque não mostrei aquie também porque tive problemas com o onloade que terão ações diferentes nos respectivos browsershehefoi mal não explicar.Pois bemamigo muito obrigado mesmo pela sua atençãoagora estou só com problemas no óperapois procurei mais afundo sobre o outros dois (safari e chrome)como ativar o document.readyStatee cheguei a isso:if(/Safari/i.test(navigator.userAgent)){ //Test for Safari var _timer=setInterval(function(){ if(/loaded|complete/.test(document.readyState)){ clearInterval(_timer) saydone(); // call target function }}, 10) }espero que alguém também aproveite desse códigohehehepois funcionou em ambos (safari e chrome)mas agora vou atrá da ovelha negra hehe o óperafalowmuito obrigado mesmo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Cardon
boa noite amigos
estou com um problema e estou quebrando minha cabeça o dia todo
o problema se agrava quando não posso alterar a estrutura do html
ou seja, não posso alterar nada manualment no body por exemplo
minha dúvida é como criar um script para ativar uma function que criei apos o carregamento total da página
ou seja quando todos os tags html, css e js externos forem todos aplicados e carregados
a tal função ser ativada.
obrigado desde já.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.