Ir para conteúdo
Fórum Script Brasil
  • 0

apenas mostrar pagina quando tudo já estiver carregado


Cardon

Pergunta

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

  • 0

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 inicialmente

body {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"
}

Link para o comentário
Compartilhar em outros sites

  • 0

Jonathan Queiroz, muito obrigado mesmo por ter respondido

mas já fiz isso.

com hacks no js

e alterando algumas coisas no head limitado que tenho

(onde posso chamar os meus css e js's)

mas fica dando erro

e 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 id

depois o js tem como substituir.

o que quero é o site só aparecer depois que o js substitua tudo o que tiver que substituir

obrigado mais uma vez!

Link para o comentário
Compartilhar em outros sites

  • 0

consegui

fazer de um modo mais compacto

com 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 IE

porém no mozila a div em quetão fica branca não mostrando o background da div geral

Link para o comentário
Compartilhar em outros sites

  • 0

Fica sim

deu tudo certo

coloquei uns alerts pra confirmar anteriormente.

porém já resolvi o problema. troquei isso

function 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 perfeitamente

mas 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á!!

Link para o comentário
Compartilhar em outros sites

  • 0

porque há mais coisas nesse saydone

que não mostrei aqui

e também porque tive problemas com o onload

e que terão ações diferentes nos respectivos browsers

hehe

foi mal não explicar.

Pois bem

amigo muito obrigado mesmo pela sua atenção

agora estou só com problemas no ópera

pois procurei mais afundo sobre o outros dois (safari e chrome)

como ativar o document.readyState

e 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ódigo

hehehe

pois funcionou em ambos (safari e chrome)

mas agora vou atrá da ovelha negra hehe o ópera

falow

muito obrigado mesmo

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...