La modification de l'attribut src d'une image arrête-t-elle l'image du téléchargement?

Disons que j'ai deux onglets d'accordéon. Le premier charge des centaines d'images et est ouvert lorsque la page se charge.

Je souhaite pouvoir empêcher les images de télécharger si l'utilisateur clique sur le deuxième onglet de l'accordéon. La modification des attributs src des images via js arrêtera-t-elle les images de téléchargement? Ou les demandes continuent-elles jusqu'à l'achèvement et ne s'affichent pas sur la page?

J'ai un script qui charge le logo SO dans exactement 3 secondes que j'avais fait pour une autre question.

http://alexturpin.net/slowimage/slowimage.php

En l'utilisant, j'ai essayé de reproduire le problème:

var img = new Image(); img.onload = function() { alert("loaded"); }; img.src ="http://alexturpin.net/slowimage/slowimage.php"; setTimeout(function() { img.src = ""; }, 1000); 

http://jsfiddle.net/Xeon06/RrUvd/1/

D'après ce que je comprends, en Chrome, le onload n'est pas déclenché, mais le navigateur continue à afficher un spinner et si je passe sur l'onglet réseau et trouve mon image et vérifie son contenu, c'est là. Donc, ma réponse serait non , l'image est toujours chargée, du moins dans Chrome.

C'est un problème intéressant, je vous suggère d'essayer de le tester dans autant de navigateurs que possible et d'écrire une sorte de publication sur le blog.

Votre navigateur demande cette image avec une requête HTTP GET spécifique, comme spécifié dans le protocole HTTP. Une fois qu'il le demande, le serveur HTTP démarre le transfert.

Donc, c'est entre le navigateur (en tant que client http) et le serveur http.

Étant donné que le protocole http ne prend pas en compte l'option d'annuler un transfert, le navigateur doit implémenter un mécanisme hors norme pour annuler la connexion par programme. Mais comme cela n'est pas spécifié dans aucune norme, je pense que vous ne trouverez aucun moyen de le faire avec javascript ou n'importe quel code côté client.


Vous pouvez essayer window.stop () pour arrêter toutes les requêtes, mais pas celles individuelles.


Si vous vouliez arrêter une demande unique pour une grande image, ce que vous pourriez faire, c'est de charger l'image dans un document dans un IFRAME caché. L'événement onload de l'IFRAME peut être utilisé pour charger l'image dans le document principal, date à laquelle il doit être mis en cache (en supposant que les directives de mise en cache sont configurées pour le faire).

Si l'image prend trop de temps, vous pouvez accéder à la fenêtre de contenu de IFRAME et émettre une commande d'arrêt à ce sujet.

Vous devez disposer d'autant d'éléments IFRAME que d'images pouvant être demandées simultanément.

Pris directement depuis ici et ici .

Je ne sais pas si ça va, tout comme les autres commentaires. Mais je peux suggérer une approche qui va bien fonctionner. En supposant que toutes les images ne sont pas visibles, définissez simplement l'attribut src droit lorsqu'elles deviennent visibles.

Donc, par défaut, l'URL de myGray.gif quand il n'est pas visible et configurez-le sur myImage.jpg lorsqu'il apparaît.

Lorsque vous fermez l'accordéon actuel, vous pouvez réinitialiser la source d'image dans votre GIF léger. (Ceci empêche un bug associé à gc sur certaines versions de l'ipad).