7
votes

Obtenez l'image SRC sans charger l'image?

J'ai un extrait HTML qui est retourné à travers Ajax. L'extrait est une balise code>. xxx pré>

J'ai besoin d'extraire la valeur de l'attribut src code> sans chargement initialement de l'image. La raison en est l'attribut src code> contient un chemin partiel que j'ai besoin de manipuler dans mon application pour charger correctement l'image. P>

J'ai le code suivant en extraire actuellement le SRC code> Attribut: P>

var src = $(value).attr('src');


5 commentaires

Si vous ne voulez pas charger l'image, pourquoi même faire un élément img? Créez simplement une chaîne dans le script avec la valeur.


Rendez votre serveur renvoyer . Ensuite, avec jQuery, obtenez le data-src , le manipuler et le remettre en tant que src .


Je n'ai pas de contrôle sur le serveur fini - je reçois juste un extrait d'étiquette IMG arbitraire dans le cadre d'une demande Ajax.


Si vous montrez votre fonction Ajax. Vous devez le manipuler dans le Succès ou la partie effectuée de l'AJAX avant même de le sortir sur le HTML


Si vous ne voulez pas charger l'image, vous devrez analyser le retour de l'appel AJAX comme chaîne et utiliser regex ou quelque chose pour extraire le src .


6 Réponses :


2
votes

Votre meilleur pari est probablement de produire une étiquette de données sur l'image. Vous pouvez ensuite manipuler cela à l'aide de JQuery, puis l'utiliser pour écrire le chemin d'image final.

Vous feriez donc quelque chose comme celui-ci dans votre HTML: xxx

puis Votre jQuery: xxx

éditer: désolé je viens de relire le peu où il vient via Ajax. Dans ce cas, vous pouvez probablement utiliser le rappel des données de votre demande AJAX pour dépouiller la SRC de l'image.


2 commentaires

C'était ma première pensée, mais je n'ai pas de contrôle sur le serveur pour contrôler le nom de l'attribut.


Je suppose que je pourrais faire un remplacement sur la chaîne pour le nom d'attribut avant de le charger dans JQuery ...



3
votes

J'ai résolu ceci en modifiant le nom de l'attribut SRC avant de le charger dans JQUERY.

 value = value.replace('src', 'data-src');
 var src = $(value).attr('data-src');


2 commentaires

Je serais émerveillé si l'image n'a pas au moins démarrer le chargement si vous êtes capable d'utiliser .attr () dessus. Cela signifie qu'il a créé un objet image et dispose d'une propriété .src défini sur elle.


À droite, c'est ce qui a causé la tentative de charge initiale. En remplaçant le nom d'attribut, l'élément n'a plus d'attribut SRC, et il ne tente donc plus de charger l'image.



1
votes

Si vous avez juste la chaîne, comme pourquoi ne pas aller pour regex?

quelque chose comme: / [\ "\ '] [A-Z0-9A-Z \.] * / . PS: Mes compétences de regex sont médiocres, vous pouvez donc le manipuler en conséquence.


0 commentaires

2
votes
$.ajax('someURL.html', function(data){
    var html = data.replace(/\ssrc/g, ' data-src'),
        img  = $(html),
        src = 'some/path/' + img.data('src');
    img.attr('src', src);
    $('#container').append(img);
});

0 commentaires

1
votes

Utilisez

var string = '<img src="image.png">';

var matches = string.match(/src\=("|')(.*?)\1/);

console.log(matches[2]);


0 commentaires

1
votes

Vous pouvez simplement supprimer l'attribut après avoir accès à celui-ci.

Ceci ne chargera pas l'image non valide, comme vous pouvez le confirmer dans votre console: p>

p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


1 commentaires

Intéressant. Ceci est utile. Merci!