7
votes

Changer l'attribut SRC d'une image arrêter l'image du téléchargement?

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

Je veux pouvoir arrêter les images du téléchargement si l'utilisateur clique sur la deuxième onglet Accordéon. Changera les attributs SRC des images via JS arrêtez-vous les images du téléchargement? Ou les demandes continuent-elles simplement de continuer jusqu'à ce que l'achèvement et ne pas apparaître sur la page?


5 commentaires

Avez-vous l'application en ligne? Utilisez Firebug pour savoir ou simplement nous donner le lien et nous pourrions vérifier ... j'aimerais connaître aussi la réponse :)


Tu pourrais juste essayer je suppose que ...


Je crois que ça les arrête mais je ne suis pas à 100%. J'ai écrit quelque chose il y a quelque chose qui charge beaucoup d'images comme une vignette et je manipule le DOM pendant qu'ils se chargent. Je n'ai vraiment pas pensé à la vérification de Souble mais j'ai eu l'impression distincte qu'ils avaient arrêtée.


Je pense que cela est peut-être dépendant de navigateur. Je pense que vous devez simplement l'essayer et regarder le trafic réseau sur votre ordinateur avec quelque chose comme Fiddle (moniteur de réseau gratuit) pour voir si le téléchargement s'arrête réellement. L'autre chose que vous pourriez essayer est en train de supprimer les objets DOM afin qu'ils soient libérés par le collecteur des ordures.


Vous pouvez l'arrêter en détectant si l'onglet a la mise au point (à l'aide de document.hasfocus) et arrêtez-les du chargement à l'aide de Windows.Stop (), mais vous ne pourriez pas redémarrer du dernier point.


3 Réponses :


2
votes

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

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

Utiliser, j'ai essayé de reproduire le problème: xxx

http://jsfiddle.net/xeon06/rruvd/1/ < p> de ce que je rassemble, en chrome, le surcharger ne se déclenche pas, mais le navigateur continue à afficher une spinner et si je vais sur l'onglet Réseau et que je trouve mon image et vérifiez que ce contenu est conçu. c'est là. Donc, ma réponse serait non , l'image toujours chargée, au moins en chrome.

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


3 commentaires

Cette question pourrait aider à trouver une solution: Stackoverflow.com/questions / 930237 / ...


L'événement est un problème distinct.


IE9 et FF6 Abandonnez la demande d'image



0
votes

Je ne sais pas si cela le fera, tout comme les autres commentaires. Mais je peux suggérer une approche d'approche qui fonctionnera bien. En supposant que toutes les images ne sont pas visibles, définissez simplement le bon attribut SRC lorsqu'ils deviennent visibles.

Alors, par défaut l'URL à myGray.gif quand il n'est pas visible et la définir sur myImage.jpg quand il est affiché.

Lorsque vous fermez l'accordéon actuel, vous pouvez régler la source d'image sur votre GIF légère. (Cela empêche un bug associé à GC sur certaines versions de l'iPad).


2 commentaires

Le problème signifie toujours que s'il continue à charger les images, même le régler à myGray.gif ne l'arrêtera pas.


Ainsi, empêchez le navigateur de les charger tous en premier lieu (le cas échéant).



2
votes

Votre navigateur demande cette image avec une demande spécifique HTTP GET, comme spécifié dans le protocole HTTP. Une fois que cela le demande, le serveur HTTP Démarre le transfert.

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

Puisque le protocole HTTP ne prend pas en compte la possibilité d'abandonner un transfert, le navigateur doit mettre en œuvre un mécanisme hors standard à abandonner par programme la connexion. Mais puisque cela n'est pas spécifié Dans n'importe quelle norme, je pense que vous ne trouverez aucun moyen de le faire avec JavaScript ou tout code côté client.


Vous pouvez essayer la fenêtre.stop () pour arrêter toutes les demandes, mais pas individuelle ceux.


Si vous vouliez arrêter une seule demande d'une grande image, ce que vous pourrait faire est de charger l'image dans un document dans une iframe cachée. le Onload Event de l'IFrame peut être utilisé pour charger l'image dans la principale document, à quelle heure il devrait être mis en cache (présumer que vous avez le Directives de mise en cache configurées pour le faire).

Si l'image prend trop de temps, vous pouvez accéder à l'iframe ContentWindow et émettre une commande d'arrêt à cela.

Vous devez avoir autant d'éléments iframe car il y a des images qui peuvent être demandé simultanément.

pris directement de ici & voici .


0 commentaires