Ir para o conteúdo
Rúben Moutinho

Javascript depois do html

Mensagens Recomendadas

Rúben Moutinho

Bom dia, existe alguma forma prática de colocar o javascript a ler apenas depois do html?

Cumprimentos, rm

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Explica o que queres dizer com "ler".

Se te referes a carregar js depois do HTML basta pores as tags <script > no final do body...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rúben Moutinho

coloque eu onde colocar os ficheiros de script estão a carregar antes das imagens, quero criar uma ordem de carregamento, é possivel?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rúben Moutinho

sim neste caso está a ser por ficheiros externos, no entanto tenho o meu site dividido em sections. basicamente...

<html>
<head></head>
<body>
<section id="section1"></section>
<section id="section2"></section>
<section id="section3"></section>
<section id="section4"></section>
<section id="section5"></section>
</body>
</html>

Como coloco a section 5 a carregar primeiro que as outras por exemplo?

(desde já obrigado a ambos pela ajuda :) )

Editado por Rúben Moutinho

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Mostra o código todo (html + javacript) por favor, para podermos ser mais específicos.....

.. senão, a resposta do HappyHippyHippo é a melhor que podes ter.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rúben Moutinho

A questão é essa, quero descobrir uma forma de alternar o carregamento das sections via jquery porque não tenho ideia de como o fazer.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Tens que controlar quando é que as imagens acabaram de ser carregadas através de Javascript:

var image = new Image();

image.onload = function() {
   // a imagem carregou, executar código aqui
};

image.onerror = function(error) {
   // tratar o erro, caso não seja possível carregar a imagem
};

image.url = http://host/path/para/imagem;

Para controlares o carregamento de várias imagens, o ideal será utilizares uma biblioteca de promessas, tipo o Q.js, ou mesmo o defer do jQuery:

function preloadImagePromise(url) {
   var deferred = Q.defer();

   var img = new Image();

   img.onload = function () { deferred.resolve(); }
   img.onerror = function () { deferred.resolve(); }
   /* em caso de erro, a promessa é resolvida (ou seja, ignora o facto de algumas imagens poderem não ser carregadas */

   img.src = url;

   return deferred.promise;
}

var imgSources = [ /* array de endereços de imagens */ ];

Q.all(
   _.map(imgSources, function(imgSrc) {
       return preloadImagePromise(imgSrc);
   })
).then(function() {
   // todas as imagens foram carregadas, executar
});

EDIT: BTW, não precisas de te preocupar com colocar as imagens que carregas aqui no DOM. O sistema de cache dos browsers vai garantir que só irá ser feito o carregamento das imagens uma vez.

O _ onde se utiliza a função map() é o underscore.js.

Editado por KTachyon

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.